代码之家  ›  专栏  ›  技术社区  ›  merko

检查布尔值-Javascript

  •  -2
  • merko  · 技术社区  · 7 年前

    我正在用纯Javascript编写一个简单的游戏,并且有一个布尔值,它应该告诉我是否有两个或一个玩家(vs-computer),但在这两种情况下,我都有两个玩家或vs-computer。

    代码如下:

     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 回复  |  直到 7 年前
        1
  •  3
  •   T.J. Crowder    7 年前

    如果您的代码真的如图所示, computer 将是 true 截至检查时,因为检查是立即进行的;事件处理程序不可能已启动。

    你需要检查一下 计算机 后来 ,以便查看对所做的更改 计算机 由您的处理程序执行。您可能会在响应另一个事件时这样做,例如用户说“开始游戏”:

    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) )。