2

私は単純な三目並べゲームを作成しており、現在、ユーザーのチェックを変数に保存しようとしています。問題は、私の現在のコードでは、xMoves および oMoves 配列が Void 0 を返すことです。このコードの何が問題なのですか? http://jsfiddle.net/Z6StP/

var storeMoves = function () {
    if (currentPlayer === X) {
        xMoves.push(cellTracker);
    } else if (currentPlayer === O) {
        oMoves.push(cellTracker);
    }
};
4

2 に答える 2

1

void 0;値を表す別の方法にすぎませんundefined

.push()メソッドは を返しませんvoid 0。新しい配列の長さを返します。

コンソールに表示されているのは、内部にvoid 0 (またはundefined)を含む配列です。cellTrackerこれは、値が割り当てられていない配列にプッシュしているためです。

への割り当てがありますcellTracker、それはローカル変数です。その前を削除するvarと、外側のものに割り当てられます。

/*var*/ cellTracker = $(this).attr('id');
于 2013-06-08T14:25:03.840 に答える
0

cellTrackerのクリック関数内で変数を再度定義するためですtd's。定義を削除し、既に定義されている変数を使用すると機能します。

お気に入り:

$('td').one('click', function () {
    turnCount += 1;
    setCurrentPlayer();
    $(this).text(currentPlayer);
    cellTracker = $(this).attr('id');
    storeMoves();
    console.log(turnCount, xMoves, oMoves);
});

フィドル: http://jsfiddle.net/IrvinDominin/Z6StP/1/

于 2013-06-08T14:25:08.303 に答える