簡體   English   中英

未捕獲的類型錯誤:無法讀取 JavaScript Memory 游戲中未定義的屬性“0”

[英]Uncaught TypeError: Cannot read property '0' of undefined in JavaScript Memory game

我的 JavaScript memory 游戲有問題,它應該創建一些<div/>作為我們的 memory 游戲卡和列在按下開始按鈕之前他想要輸入的數量。 但不知何故,我收到一條錯誤消息: Uncaught TypeError: Cannot read property '0' of undefined 這是負責創建 div 表的代碼,而不僅僅是:

function GameBoard(n,m) {
    this.n = n;
    this.m = m;

    score = 0;

    //n*m%2==0

    picBoard = new Array(n);
    last = -1;

    accepTab = new Array(n*m/2);
    for (var i=0; i<accepTab.length; i++){
        accepTab[i] = 0;
    }

    for (var i=0; i<picBoard.length; i++){
        picBoard[i] = new Array(m);
        for (var j=0; j<picBoard[i].length; j++){
            picBoard[i][j] = new Picture(accepTab);
        }
    }

    function getPicture(id) {
        console.log(picBoard);
        return picBoard[id[0]][id[1]].val
    }

    function show(obj){
        val = getPicture(getId(obj.id));
        $(obj).html(val);
        if(last==-1){
            last = val;
            lastId = getId(obj.id);
        } else {
            if(last==val){
                $('#score').html(++score);
            } else {
                setTimeout(function(){
                    $(obj).html("X");
                    $("#col"+lastId[0]+"_"+lastId[1]).html("X");
                }, 1000);

            }
            last=-1;
        }
    }

    for(var i=0; i<n; i++){
        $("#board").append("<div class=row id=row"+i+"> ");
        for(var j=0; j<m; j++){
            $("#board #row"+i).append("<span class=col id=col"+i+"_"+j+">X");
            $("#col"+i+"_"+j).bind("click", function() {
                show(this);
            });

        }

    }

}

並且控制台說問題出在 function getPicture行,返回picBoard[id[0]][id[1]].val 以及用於啟動游戲的 function

var board;

function start(){
    var n = document.getElementById("rows").value;
    var m = document.getElementById("cols").value;
    board = new GameBoard(n,m);
    sec=0;
    $("#start").unbind("click");

}

每當我調用沒有nm變量的 function GameBoard而不是像 3 和 4 這樣的值時,一切正常,這只是當我試圖給用戶一個選項來選擇他想要多大的 memory 卡表時.

n 和 m 是字符串,而不是數字。 所以你做的一些操作會導致不同的結果。 所以將它們轉換為數字

board = new GameBoard(+n,+m);

暫無
暫無

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

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