我有这个抛硬币功能,到目前为止它正确显示“正面”或 随机“尾部”。不过,我希望每当硬币正面朝上时都会出现一条消息,说“你赢了”。但现在它只显示 无论硬币落在哪一面,“你都输了”。我该如何解决这个问题?
<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
)以及它们为何存在问题的信息。
关于JavaScript 硬币翻转 "You Win/lose"消息不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50203560/