我用简单的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
的问题,但没有任何帮助。
答案 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)
)。