JavaScript井字棋选X/0回合后点击格子总显示0如何修复?
问题核心原因
你当前的代码没有存储「已选中的回合符号」的状态变量,且divCall函数中强制先后执行selectX和select0两个赋值逻辑,0的赋值永远覆盖X的结果,同时绑定在弹窗按钮上的selectX/select0函数没有接收到格子DOM参数,本身也无法完成赋值操作。
修复步骤
1. 新增全局状态变量存储当前选中的符号
在JS代码最开头添加变量:
let num1='X'; let num2='0'; let currentPlayer = ''; // 新增:存储当前要填充的符号
2. 调整selectX和select0函数的逻辑
这两个函数的作用改为设置当前玩家符号,而非直接修改格子内容:
// 选择X回合 function selectX(){ close(); currentPlayer = num1; } // 选择0回合 function select0(){ close(); currentPlayer = num2; }
3. 重写divCall函数
点击格子时先判断是否已选择回合,再给空格子填充对应符号:
function divCall(divIndex){ // 未选择回合时不响应点击 if(!currentPlayer) return; let childDiv=document.getElementById("div"+divIndex); // 已有内容的格子不允许重复修改(符合井字棋规则,不需要可以删掉这行) if(childDiv.innerHTML.trim() !== '') return; childDiv.innerHTML = currentPlayer; }
修改完成后即可实现你要的效果:先点击Start选择对应回合,之后点击空格子就会填充对应符号。
内容的提问来源于stack exchange,提问作者user15220138
相关产品推荐
相关产品推荐

