2016-11-06 1 views
-1

なぜこのコードが機能していないのか簡単に質問します。私はそれが可変範囲と関係があるかもしれないと感じているが、何が間違っているのかを特定することはできない。私は、コンソールに印刷するdiv idを得ることができますが、id attrがステートメントの内部で定義されていないというエラーが表示されます。JavaScript ifステートメントスコープ

var game = { 

    currentPlayerTurn: players.firstPlayer.token, 

    displayToken: function() { 
     $('.unit').click(function() { 
      if(game.currentPlayerTurn === 'X' && !$(this).hasClass('selected')) { 
       $(this).addClass('selected').removeClass('unit').text("X"); 
       game.currentPlayerTurn = players.secondPlayer.token; 
      } else if(game.currentPlayerTurn === 'O' && !$(this).hasClass('selected')) { 
       $(this).addClass('selected').removeClass('unit').text("O"); 
       game.currentPlayerTurn = players.firstPlayer.token; 
      } 
      game.win($(this)); 
     }) 
    }, 

    win: function(div) { 
     game.winCombos.forEach(function(element) { 
      element.forEach(function(smell){ 
       if(smell === div.attr('id')) { 
        smell = game.currentPlayerTurn; 
       } 
      })}) 
     console.log(div.attr('id')); 
    }, 



    winCombos: [[1, 2, 3], [4, 5, 6], [7, 8, 9], [1, 4, 7], [2, 5, 8], [3, 6, 9], [1, 5, 9], [3, 5, 7]] 


}; 

game.win(); 
+1

とは思えない、 'div'引数は利用すべきですか?これはコード全体ですか? – adeneo

+1

は少なくとも1つの要素が一致するjqueryオブジェクトですか? –

+0

@adeneo - 私はdiv.attr( 'id')の結果が "未定義"だと思います - もしdivが空のjqueryの結果であればそうでしょう...またはdiv jqueryオブジェクトの最初の要素はidなし –

答えて

0

game.win();は、ページ要素で呼び出されていません。あなたは何かを与える必要があります。

例:

<div id="game"></div> 

game.win($("#game"));