[英]JavaScript Coin Flip “You Win/lose” Message Not Working
我具有此抛硬币功能,到目前为止,它可以正确正确随机显示“ Heads”或“ Tails”。 但是,我希望每当硬币落在头上时都会出现一条消息,说“您赢了”。 但是现在,无论硬币落在哪一侧,它都只会显示“您松动”。 我怎样才能解决这个问题?
<DOCUTYPE html> <head> <title>Coin Toss V1</title> <style> </style> </head> <body> <button id="click" type="button">CLICK ME</button> <p> <b> You got:</b> <span id="result"></span> </p> <script> document.getElementById('click').onclick = click; var heads = 0; var tails = 0; function click() { x = (Math.floor(Math.random() * 2) == 0); if (x) { flip("heads"); } else { flip("tails"); } }; function flip(coin) { document.getElementById("result").innerHTML = coin; }; if (x == "heads") { document.write("you win!"); } else { document.write("you loose"); } </script> </body> </DOCUTYPE>
您的示例代码有很多问题-此答案将有助于解决最紧迫的问题。
我建议按如下所示重新组织您的click
功能:
function click() {
x = (Math.floor(Math.random() * 2) == 0);
if (x) {
flip("heads");
document.write("you win!");
} else {
flip("tails");
document.write("you loose");
}
};
并删除以下代码块:
if (x = heads) {
document.write("you win!");
} else {
document.write("you loose");
}
需要指出的几件事:
heads
与"heads"
不同。 前者表示特定的字符串变量,而后者则是字符串值。 =
与==
不同。 前者为变量分配值,而后者进行相等比较。 click
内部,您为x
赋值为true
或false
,因此下面的if
语句应将x
与true或false进行比较。 if
语句在页面加载后立即触发-在执行click
函数之前。 将您的document.write
代码移动到click
函数中是有意义的,以便它可以输出硬币翻转click
函数的结果。 我还建议您阅读有关全局变量(例如,变量x
)及其为何有问题的信息。
您需要在此处修复错误。 您是将head的值分配给x,而不是进行比较。
if (x = heads){
注意:您是根据自己的情况分配的,而不是进行比较! 放
if (x == heads)
代替
if (x = heads)
否则,您将头分配给x,然后执行if(x),只要heads = 0,该值始终为假。
您需要为相等比较运算符使用两个等号,请尝试:
if (x == heads)...
除了那一行之外,您没有使用head或tails变量。 您可以删除它们并使用
if (x)...
在您的第二个if语句中,就像您在第一条中所做的一样。
结果检查应该在功能子函数flip()内,因此每次硬币被翻转时都要执行一次。
function flip(coin) {
document.getElementById("result").innerHTML = coin;
if (x = heads){
document.write("you win!");
}
else {
document.write("you loose");
}
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.