Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么';这样不行吗?转弯';s值正在增加,但仍会触发相同的事件?_Javascript_Tic Tac Toe - Fatal编程技术网

Javascript 为什么';这样不行吗?转弯';s值正在增加,但仍会触发相同的事件?

Javascript 为什么';这样不行吗?转弯';s值正在增加,但仍会触发相同的事件?,javascript,tic-tac-toe,Javascript,Tic Tac Toe,所以,我决定在JS上创建一个Tic-Tac-Toe游戏,但是当我尝试决定X或O的回合时,它没有改变。我试着使用模逻辑,通过一个变量递增,这样当它是偶数或奇数时,就可以改变圈数。但是下面的代码似乎不起作用。有人能帮我找到这里的错误吗 const secs = document.querySelectorAll('.sec'); let turn = 1; if (turn%2===0){ for (sec of secs){ sec.removeEventListener('

所以,我决定在JS上创建一个Tic-Tac-Toe游戏,但是当我尝试决定X或O的回合时,它没有改变。我试着使用模逻辑,通过一个变量递增,这样当它是偶数或奇数时,就可以改变圈数。但是下面的代码似乎不起作用。有人能帮我找到这里的错误吗

const secs = document.querySelectorAll('.sec');
  let turn = 1;

if (turn%2===0){
    for (sec of secs){
    sec.removeEventListener('click', oturn);
    sec.addEventListener('click', xturn);
} } 
else if (turn%2!= 0) {
    for (sec of secs){
    sec.removeEventListener('click', xturn);
    sec.addEventListener('click', oturn);
}}


function xturn (e){
 e.target.innerHTML = "X";
 ++turn
 console.log(turn);
}

function oturn (e){
 e.target.innerHTML = "O";
 ++turn
 console.log(turn);
}

您必须在声明函数后调用它们

只需在末尾添加这些行

xtrn(e);
奥图恩(e)

看起来,当页面加载时,您只需检查一次状态并附加/分离事件。如果不是这样,我们需要更多的背景。在任何情况下,为任务切换事件都有点过分,根据状态更改内容的值要简单得多。我该怎么做呢?类似于。最好在JS中创建游戏的“模型”,然后根据model.tysm的状态更新视图!顺便说一句,你能给我解释一下第7行(js)的逻辑吗,当前=+!现在的主要是运算符一元
+
转换布尔一元
返回一个数字,即该行将
current
的值在0和1之间切换。这些函数附加到click events,并在访问者单击某个元素时调用。