检查布尔值 - Javascript

时间:2018-03-29 05:29:28

标签: javascript boolean addeventlistener

我用简单的Javascript编写一个简单的游戏并且有布尔值,它应该告诉我我是否有两个或一个玩家(对比计算机),但在这两种情况下我都要玩两个玩家或玩电脑。

以下是代码:



 var computer = true; // true should be default
 
 // Click listener to change the value
 twoPlayer.addEventListener("click", function() {
    // styling code
    computer = !computer;
 });
 
 
 if(computer == true) {
     // code
 } else {
     // code
 }




到目前为止,我还没有使用纯JS工作,我读了很多关于boolean的问题,但没有任何帮助。

1 个答案:

答案 0 :(得分:3)

如果您的代码确实如图所示,computer将在检查时为true,因为支票会立即完成;事件处理程序不可能被解雇。

在事件发生后,您需要稍后检查computer ,以便查看处理程序对computer所做的更改。您可能会这样做以回应另一个事件,例如用户说“开始游戏”:

var computer = true;
document.getElementById("twoPlayer").addEventListener("click", function() {
  computer = !computer;
  console.log("toggled to " + computer);
});

document.getElementById("start").addEventListener("click", function() {
  if (computer) {
    console.log("Start game against the computer");
  } else {
    console.log("Start two-player game");
  }
});
<input id="twoPlayer" type="button" value="Toggle Two-Player Mode"> <input id="start" type="button" value="Start Game">

但是,根据twoPlayer的不同,您可能根本不需要事件处理程序。例如,如果它是一个复选框,您可以让它保持自己的状态,并在需要时检查该状态:

document.getElementById("start").addEventListener("click", function() {
  var twoPlayer = document.getElementById("twoPlayer");
  if (twoPlayer.checked) {
    console.log("Start two-player game");
  } else {
    console.log("Start game against the computer");
  }
});
<label>
  <input id="twoPlayer" type="checkbox"> Two player
</label>
<input id="start" type="button" value="Start Game">

旁注:您的比较中不需要== true,只需if (computer)即可(或者如果您正在检查否定关键字if (!computer))。