0

JavaScript のループについて質問があります。主に jQuery を使用していますが、今回は純粋な JavaScript で簡単なゲームを作成することにしました。

このメソッドですべての「td」をループすると、機能します。これらcells[i]は td 要素であり、イベントをそれらに添付できます。

    for(i = 0; i < cells.length; i++){
        if(cells[i].nodeName == 'TD')
        {
            cells[i].onclick = function(){
                // call funciton on onclick
            };
        }
    }

しかし、私がこのようにすると、各要素は単なるインデックス番号であり、最後の 2 つはlengthanditemです。

    for(var cell in cells){
        // cell is a number
    }

違いは何ですか? foreach ループが思いどおりに動作しないのはなぜですか?

4

2 に答える 2

2

cellcellsHTMLCollectionへのインデックスであるため、数値です。2 番目のループでは、次のように値を使用します。

for(var cell in cells){
    if(cells[cell].nodeName == 'TD')
    {
        cells[cell].onclick = function(){
            GameTurnExecute(player);
        };
    }
}
于 2012-12-16T11:24:43.050 に答える
0

次のように言うこともできます。

for(var cell in cells){
    if(cells.hasOwnProperty(cell))
    {
        cells[cell].onclick = function(){
            GameTurnExecute(player);
        };
    }
}

プロトタイプ チェーンからのプロパティが表示されないようにします。( https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/hasOwnProperty )

実際、javascript で使用するほとんどの場合for in、hasOwnProperty を使用します。

于 2012-12-16T12:13:34.650 に答える