var userchoice;
var compchoice = parseFloat(Math.ceil(Math.random()*10));
console.log(compchoice);
function guess () {
if (compchoice === document.getElementById("userguess").value) {
alert("You guessed it!");
location.reload()
}
else if (document.getElementById("userguess").value > compchoice) {
alert("That was a little high, try again")
}
else if (document.getElementById("userguess").value < compchoice) {
alert("That was a little low, try again")
}
else if (isNaN(document.getElementById("userguess").value)) {
alert("Guess a number bro")
}
}
所以这是我的代码。我是一个初学者,只是搞乱概念。现在问题是,如果你正确地猜测了数字,if
中的第一个guess()
语句应该运行,但事实并非如此。另一个else if
运行,所以我对问题是什么感到难过。任何帮助表示赞赏。
答案 0 :(得分:3)
这将返回一个字符串:
document.getElementById("userguess").value
这将返回一个数字:
parseFloat(Math.ceil(Math.random()*10))
由于类型不同,===
将返回false
。一些解决方案:
==
+str
''+num
答案 1 :(得分:0)
compchoice === document.getElementById("userguess").value
评估为false,因为===
运算符正在将float
与string
进行比较。
您可以通过将用户猜测解析为浮动或使用==
运算符来解决此问题。
答案 2 :(得分:0)
The ===
operator不仅仅检查值相等,而且还键入相等。所以这将是错误的:
compchoice === document.getElementById("userguess").value
因为compchoice
是数字数据而.value
是sting数据。您可以通过使用非严格比较运算符立即解决问题:
compchoice == document.getElementById("userguess").value
这会比较不考虑类型的值,因此1
和'1'
之类的内容会相等。