我想使用.each()循环一个jquery选择器,并将值赋给多维数组$ record。 这是我尝试过的,它不起作用
JQUERY:
var $record = new Array(),
i=0,
x,y;
$("td").each(function(){
x = Math.floor((i+1)/4),
y = i%4;
$record[x][y] = true;
i++;
});
CHROME CONSOLE ERROR:未捕获的TypeError:无法设置未定义的属性“0”
答案 0 :(得分:1)
由于您没有定义内部数组,因此错误正在增加。
尝试,
$("td").each(function(){
x = Math.floor((i+1)/4),
y = i%4;
if(!$.isArray($record[x])) { $record[x] = []; }
$record[x][y] = true;
i++;
});
答案 1 :(得分:0)
考虑一下
var record = [],
i = 0,
x = Math.floor((i+1)/4),
y = Math.floor((i+1)/4)
console.log(record); // 0
console.log(record[0]); // undefined
console.log(record[x][y]); // Uncaught TypeError:
// Cannot read property '0' of undefined
首次迭代,i
为0
。您正在尝试访问不存在的元素。或者更具体地说,数组上的属性0
,如果索引0
上有元素,它就会存在。
换句话说,如果你向数组中添加一些东西,它就会获得它的属性:
record[0] = 'something';
console.log(record['0'], record.hasOwnProperty('0')); // 'something', true