我正在编码一个记忆游戏,允许一个警报与一个5-6数字的代码闪现,然后你必须记住,并放置在一个提示框。下面是我到目前为止掌握的代码:
var mathRandom = (Math.round(Math.random()*10000))
alert(mathRandom);
var answer=prompt("What is the number?");
if(answer === mathRandom)
{
alert("Well done")
}
else
{
alert("Wrong")
}我的代码的问题是,即使正确的警报说错了,我认为这是因为当我检查变量是否相等时,数学随机生成一个新的数字。我想知道我能不能帮上忙。谢谢
发布于 2014-03-11 14:46:07
问题是answer是字符串,mathRandom是数字。您使用的是===,它不强制类型。您需要将answer转换为一个数字,然后进行比较:
if (+answer === mathRandom) {
alert("Well Done");
}或者:
if (parseInt(answer) === mathRandom) {
alert("Well Done");
}或者您只需使用==操作符:
if (answer == mathRandom) {
alert("Well Done");
}它将自动将mathRandom中的数字转换为字符串。
也请参阅这个问题:Which equals operator (== vs ===) should be used in JavaScript comparisons?
更好地理解==和===的区别
发布于 2014-03-11 14:47:16
===检查变量的值和类型。数学函数生成数字,提示符生成字符串。这就是为什么变量总是不相等的原因。
用只检查值的==代替它--您的代码就可以工作了。
演示: http://jsfiddle.net/Bx7W8/
发布于 2014-03-11 14:48:06
您需要将提示符的结果转换为数字。现在,您正在用字符串和数字进行比较。
在JavaScript中:
750 !== "750";
750 === parseInt("750", 10);以下是解决办法:
var mathRandom = Math.round(Math.random() * 10000);
alert(mathRandom);
var answer = parseInt(prompt("What is the number?"), 10);
if (answer === mathRandom)
{
alert("Well done")
}
else
{
alert("Wrong")
}https://stackoverflow.com/questions/22329076
复制相似问题