簡體   English   中英

錯誤:無法讀取未定義的屬性

[英]Error : Cannot read property of undefined

我似乎無法解決此問題。 我的代碼如下:

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位置的對象。

未定義的不是矩陣,而是matrix [i]。 由於您是從jQuery的attribute方法中獲取i和j值的,因此它們是字符串。 因此,在將它們用作數組的索引之前,必須首先將它們轉換為int:

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

還要注意,我將第二個參數傳遞給第一個slice調用,因為您只需要第一個字符。

matrix是一個長度為9的數組,但您的for循環要進行10次( i < 10 )。 將循環更改為:

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

@帕特里克·埃文斯是對的。 jQuery文檔的ready函數不需要包裝在window.onload事件中。 同樣,如果您有在window.onload之前觸發的任何代碼(因為document.ready首先觸發),那么該數組將不會被填充。 @falinsky在使用var matrix = []時也是正確的; 另請查看有關[]與新Array()之間的區別的答案:https://stackoverflow.com/a/1273936/2488939

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM