我的目标是迭代ID为ajaxResponse1的表,并将每个COLUMN'S值存储在一个单独的数组中。 valuesArr中的每个条目都是一个包含单个值数组的列。
我尝试使用新的Array而不是新的Object,但我似乎仍然没有收到任何警告我的屏幕输出。我应该使用.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));
答案 0 :(得分: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
}
}
});
答案 1 :(得分:1)
push()方法将新项添加到数组的末尾,并返回新的长度。 所以,试着改变它:
valuesArr[colNum].push( $(this).html() );
只需删除=
此外,您需要在第一次使用它之前初始化数组,请尝试:
valuesArr[colNum] = valuesArr[colNum] ? valuesArr[colNum] : [];
您将在此处找到完整的工作示例 http://jsfiddle.net/57A9z/
答案 2 :(得分: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++;
});