2017-07-31 12 views
1

1回目のクリックで「X」と表示され、その後「O」に変わります。それは再び "X"に変更されません要素は1回目のクリックで変更されますが、2回目のクリックで元に戻りません

私はチックタックつま先のゲームをjavascriptでしようとしています。

最初のクリックは「X」と表示され、2番目のクリックは「O」と表示されます。しかし、その後のクリックでは、「O」のみが表示され、すなわち「X」に戻ることはない。

function startGame(){        
 
     //To display whose turn it is 
 
     document.turn="X"; 
 
     setMessage(document.turn + " gets to start"); 
 
    } 
 
    
 
    function setMessage(msg){       
 
     //gets the message div and puts value = msg 
 
     document.getElementById("message").innerText= msg; 
 
    } 
 
    
 
    function nextMove(square){       
 
     square.innerText= document.turn; 
 
     switchTurn(); 
 
    } 
 
    
 
    function switchTurn(){ 
 
     if(document.turn="X"){ 
 
      document.turn="O"; 
 
     }else{ 
 
      document.turn="X"; 
 
     } 
 
    }
<body onload="startGame();">      
 
     <div id="message">Messages will go here</div> 
 
     <table border=0> 
 
      <td> 
 
       <table border=1> 
 
      \t  <tr> 
 
      \t \t  <td class="box" onclick="nextMove(this);"></a></td> 
 
      \t \t \t <td class="box" onclick="nextMove(this);"></a></td> 
 
      \t \t  <td class="box" onclick="nextMove(this);"></a></td> 
 
      \t  </tr> 
 
      \t \t <tr> 
 
      \t \t  <td class="box" onclick="nextMove(this);"></a></td> 
 
      \t \t \t <td class="box" onclick="nextMove(this);"></a></td> 
 
      \t \t \t <td class="box" onclick="nextMove(this);"></a></td> 
 
      \t \t </tr> 
 
      \t \t <tr> 
 
      \t \t  <td class="box" onclick="nextMove(this);"></a></td> 
 
      \t \t \t <td class="box" onclick="nextMove(this);"></a></td> 
 
      \t \t \t <td class="box" onclick="nextMove(this);"></a></td> 
 
      \t \t </tr> 
 
      \t </table> 
 
      </td> 
 
      <td> 
 
       <table> 
 
      \t  <tr> 
 
         <td><input type=text size=5 id="player1" value=0></td> 
 
         <td>Player1</td> 
 
        </tr> 
 
      \t \t <tr> 
 
         <td><input type=text size=5 id="player2" value=0></td> 
 
         <td>Player2</td> 
 
        </tr> 
 
      \t \t <tr> 
 
         <td><input type=text size=5 id="ties" value=0></td> 
 
         <td>Ties</td> 
 
        </tr> 
 
      \t </table> 
 
      </td> 
 
     </table> 
 
    </body>

+0

'(document.turnは= "X")の場合{' '==='使うべきではなく、 '=' – Pointy

+0

我々の前にあなたのHTMLは無効です。 –

+0

[演算子(== vs ===)はJavaScriptの比較で使用する必要がありますか?](https://stackoverflow.com/questions/359494/which-equals-operator-vs-should-be-used) -in-javascript-comparisons) –

答えて

4

あなたの条件に代入しています。

​​

あなたのコードは()、それが「X」をdocument.turn作り、truthy値を返す、その後すぐに振り向くと、「O」、それを作っている場合は、その到達しました。

あなたが代わりにそこ===使用することをお勧めします:

function switchTurn(){ 
    if(document.turn==="X"){ 
    document.turn="O"; 
    } else { 
    document.turn="X"; 
    } 
} 
+0

@Singhal_Anukulはあまりにも気にしないでください。すべてのプログラマーはこのエラーを起こしました...あなたが期待していたように機能していないときにチェックすることを忘れないでください! – McHat

関連する問題