首页 > 解决方案 > 将 innerText 设置为一个变量,但它不会改变

问题描述

我正在尝试使用按钮编写井字游戏,在我的计划中,我想将 button.innertext 存储为变量,以便我可以使用它来更方便地判断游戏结果。这是代码,为简单起见,我这里只放了一个按钮

const b1 = document.getElementById("b1");
const b = [b1];
let b1T = b1.innerText;
let xo = true;
show();
function show() {
  for(let i = 0; i < 9; i++) {
    b[i].addEventListener("click",go)
  }
}
//decide x or o is displayed
function go(event) {
  if(xo) {
    event.target.innerText = "X";
    event.target.disabled = true;
    xo = false; 
  } else {
    event.target.innerText = "O";
    event.target.disabled = true;
    xo = true;
  }
}
function decide() {
if(b1T === "X"){
//do something
}
}

当我尝试在函数决定中编写部分时,我注意到 b1T 没有通过 console.log(b1T) 将它的值更改为“X”或“O”,我只是像我在 HTML 文件中设置的那样为空<button id = "b1"><button>,但是当我输入了 console.log(b1.innerText) 它确实显示了它的 innerText。我是在错误的地方或其他地方设置了 bit 变量吗?

标签: javascripthtml

解决方案


decide而是从函数内的按钮获取文本。当您按下按钮时,您的按钮正在更改其内部文本,因此您需要获取最新的文本(而不是最旧的文本)。

function decide() {
 const b1 = document.getElementById("b1");
 if(b1.innerText === "X"){
  //do something
 }
}

推荐阅读