首页 > 解决方案 > 无法弄清楚为什么我的变量没有更新

问题描述

我提前道歉,因为我试图保持的一些干净的代码已经变成了一个怪物,我试图弄清楚为什么这不起作用。我正在尝试增加,以便可以在和turnCount之间切换。我在使用 var 中声明了它,因此它更具全局性,然后我将值传递给它应该在那里增加,不是吗?player1player2ticGametakeTurn

    // intializes and starts game

const ticGame = new TicGame();
ticGame.start();
function TicGame(){ 
    // creates and tracks the players
    const board = new Board();
    const player1 = new Player1(board);
    const player2 = new Player2(board);
    this.positions = Array.from(document.querySelectorAll(".column"));
    this.values=[];
    var turnCount=0;
    for(let i = 0; i < this.positions.length; i++){
        this.values[i]=this.positions[i].innerHTML;
    }
    this.start = function() {
        const config = { childList: true };
        const observer = new MutationObserver(() => takeTurn(turnCount));
        board.positions.forEach((el) => observer.observe(el, config));
        takeTurn(turnCount);
    }
    function takeTurn(turnCount) {
    if (turnCount % 2 === 0) 
    {
      console.log(5);
      turnCount++;
      console.log(turnCount);
      player1.takeTurn();

    } 
    else
    {
        console.log(6);
      player2.takeTurn();
      turnCount++;
      console.log(turnCount);
    }
    for(let i = 0; i < ticGame.positions.length; i++){
        ticGame.values[i]=ticGame.positions[i].innerHTML;
    }
 }

    //
    // let a = document.getElementById('box1').innerHTML;
    // console.log(a);
    console.log(this.positions);
    console.log(this.values);
    const winningCombinations = [
        [0,1,2],
        [3,4,5],
        [6,7,8],
        [0,4,8],
        [2,4,6],
        [0,3,6],
        [1,4,7],
        [2,5,8]
    ];
    console.log(winningCombinations);
}
// had to pop it out from ticGame because apparently i cant keep it in one object :(
function Board() {
  this.positions = Array.from(document.querySelectorAll('.column'));
 }
function Player1(board){    
    console.log(1);
    this.takeTurn=function(){
    board.positions.forEach(el => el.addEventListener('click', handleTurnTaken));
    }
}
function Player2(board){
    console.log(2);
    this.takeTurn=function(){
    board.positions.forEach(el => el.addEventListener('click', handleTurnTakenO));
    }

}
 function handleTurnTaken(event) {
     console.log(3);
    if(event.target.innerText === 'X' || event.target.innerText === 'O'){
        console.log("NAH");
        board.positions.forEach(el => el.removeEventListener('click', handleTurnTaken));
    }
    else{
    event.target.innerText = 'X';
    board.positions.forEach(el => el.removeEventListener('click', handleTurnTaken,true));
    board.positions.forEach(el => el.removeEventListener('click', handleTurnTaken,false));
    }
 }
 // **** me i suck at this 
 function handleTurnTakenO(event) {
     console.log(4);
    if(event.target.innerText === 'X' || event.target.innerText === 'O'){
        console.log("NAH");
        board.positions.forEach(el => el.removeEventListener('click', handleTurnTakenO));
    }
    else{
    event.target.innerText = 'O';
    board.positions.forEach(el => el.removeEventListener('click', handleTurnTakenO,true));
    board.positions.forEach(el => el.removeEventListener('click', handleTurnTakenO,false));
    }
 }

任何帮助将非常感激。

标签: javascripthtml

解决方案


您缺少“,”和“;” 尤其是在写“turnCount++”的时候


推荐阅读