错误:无法读取undefined的属性

时间:2014-03-18 01:10:35

标签: javascript jquery

我似乎无法解决这个问题。我的代码如下:

var matrix = [];

// initialise the grid:
window.onload = function(){

    var cells ='';

    for(var i = 0; i < 10; i++){

        matrix[i] = [];

        for (var j = 0; j < 10; j++){

            matrix[i][j] = "white";

            cells += "<span class = 'cell' id='cell"+ i + "" + j + "' onClick = 'toggleCell("+i+","+j+")' ></span>";

        }
    }
        $('#grid-container').html(cells);

}

当我尝试在其他方法中调用矩阵元素时,我得到了解开。

解决

  • 稍后尝试访问invaldi位置的对象。

3 个答案:

答案 0 :(得分:1)

不是矩阵是未定义的,而是矩阵[i]。由于您是从jQuery的属性方法中获取i和j值,因此它们是字符串;因此,在将它们用作数组的索引之前,必须先将它们转换为int:

var i = parseInt($(this).attr('id').slice(-2, -1), 10);
var j = parseInt($(this).attr('id').slice(-1), 10);

另请注意,我将第二个参数传递给第一个切片调用,因为您只需要第一个字符。

答案 1 :(得分:0)

matrix是一个长度为9的数组,但你的for循环次数是10次(i < 10)。将你的循环改为:

for( var i = 0; i < matrix.length; i++) {
}

答案 2 :(得分:0)

@Patrick Evans是对的。 jQuery文档就绪函数不需要包含在window.onload事件中。此外,如果你有任何代码在window.onload之前触发(因为document.ready首先触发),那么该数组将不会被填充。 @falinsky在使用var matrix = []时也是正确的;还可以查看[]和新Array()https://stackoverflow.com/a/1273936/2488939

之间差异的答案
相关问题