0

我的目标是遍历一个 ID 为 ajaxResponse1 的表,并将每个 COLUMN 的值存储在一个单独的数组中。valuesArr 中的每个条目都是包含单个值数组的列。

我尝试使用新数组而不是新对象,但我似乎仍然没有收到任何输出警报到我的屏幕。我应该使用 .push 的某种组合将每个新列值放入适当的数组吗?希望这很清楚。有任何想法吗?谢谢!

var valuesArr = new Object();

$('#ajaxResponse1 tr').each( function() {
    var colNum = 0;
    $('th, td', this).each( function() {
        valuesArr[colNum] = valuesArr[colNum].push( $(this).html() );   
        colNum++;
    });
});

alert(JSON.stringify(valuesArr));
4

3 回答 3

2

在该数组实际存在之前,您不能将某些内容推送到数组上。

因此,在内部循环的每次迭代中,如果初始数组不存在,则必须创建它:

var valuesArr = [];

$('#ajaxResponse1 tr').each( function() {
    $('th, td', this).each( function(i, el) { // nb: implicit column number
        var html = $(this).html();
        if (i in valuesArr) {
            valuesArr[i].push(html);
        } else {
            valuesArr[i] = [ html ];  // new array with one element
        }
    }
});
于 2012-05-04T16:54:32.577 回答
1

push() 方法将新项目添加到数组的末尾,并返回新的长度。所以,试着改变它:

valuesArr[colNum].push( $(this).html() );  

只需删除=

此外,您需要在第一次使用它之前初始化数组,尝试:

valuesArr[colNum] = valuesArr[colNum] ? valuesArr[colNum] : [];

您将在这里找到完整的工作示例 http://jsfiddle.net/57A9z/

于 2012-05-04T16:52:01.123 回答
0
var valuesArr = [];
var r = 0;
var c = 0;

$('#ajaxResponse1 tr').each( function() {
    valuesArr[r] = [];
    $('th, td', this).each( function() {
        valuesArr[r][c] = $(this).html();   
        c++;
    });
    c = 0;
    r++;
});
于 2012-05-04T16:52:52.017 回答