问题描述 投票:0回答:4

我正在尝试在pre标签中的数字数组中计算某些数字。例如计算有多少个数字等于或大于7。例如,我有这个

    <pre class="data">2 7 3 1 2
    6   6   2   5   3
    8   2   5   9   9
    5   10  5   6   10
    2   10  3   </pre>

我想出了一种通用的方法:

    document.getElementsByTagName ('PRE')[0].firstChild.data = document.getElementsByTagName ('PRE')[0].firstChild.data.replace (/\t+$/, '')

但是我不知道如何得到各个数字。是数组吗?还是我需要按空格解析的数字列表?

我看过以下线程:Using <pre> tag to display data in columns?,并尝试使用for循环抓$ entry [i],但我无法读取单个数字。

javascript html pre
4个回答
-1
投票

pre标签的内容只是文本。为了访问数字,您必须解析文本。我假设您只需要数字列表,并且这些列没有意义。

如果是这样,您需要做的是在空白处分割文本,然后处理每个项目:

var number_string = document.getElementsByTagName ('PRE')[0].firstChild.data;

var numbers = number_string.split(/[\s]+/);
var a_number;

for (var i = 0; i <= numbers.length; i++) {
    a_number = parseInt(numbers[i]);  // assuming the numbers are whole numbers.
}

请注意,numbers [i]实际上是数字的字符串表示形式,因此您需要使用parseInt(numbers [i])来获取实数。 (或者如果不是整数,则为parseFloat(numbers [i]))

希望有帮助。

杰伊


2
投票

以下内容将为您提供二维数组:

var str = document.getElementsByTagName('pre')[0].textContent;

str                                 // take the string and
    .split('\n')                    // break it into an array of lines;
    .map(function(line) {           // then transform each line by
        return line                 // taking the line,
            .trim()                 // removing leading and trailing spaces,
            .split(/\s+/)           // and breaking it into an array at whitespace,
            .map(Number);           // with each piece cast to a number.
     });

1
投票

http://jsfiddle.net/Lwkw4ee4/

String.prototype.trim = function() {  // just in case of an old browser
    return this.replace(/^\s+|\s+$/gm,'');
}

var str = document.getElementById('data').innerHTML.trim();
var data = str.split(/\s+/);
alert(data);

数据将是一维数字数组(准确地说是带数字的字符串,但这并不重要-易于转换)。


0
投票

http://jsbin.com/mepulu/2/edit

var text = document.getElementsByClassName('data')[0].innerHTML; // Text
var values = text.split(/\s+/); // Array of strings
var numbers = values.map(function(num) {
  return parseInt(num, 10);
});
numbers; // Array of integers
© www.soinside.com 2019 - 2024. All rights reserved.