Javascript记忆游戏拼图

时间:2014-03-11 14:42:54

标签: javascript

我正在编写一个记忆游戏,它允许一个警报闪烁,然后你需要记住一个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")
    }

我的代码存在的问题是,即使你说得对,警报说错了,我想这是因为当我检查变量是否相等时,mathrandom会生成一个新数字。我想知道我是否能得到一些帮助。 感谢

3 个答案:

答案 0 :(得分:3)

问题是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?

更好地了解=====

之间的区别

答案 1 :(得分:1)

===检查变量的值和类型。数学函数生成数字,而提示生成字符串。这就是变量总是不相等的原因。

将其替换为仅检查值的== - 您的代码将起作用。

演示:http://jsfiddle.net/Bx7W8/

答案 2 :(得分:1)

您需要将提示结果转换为数字。现在,您正在与字符串和数字进行比较。

在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")
}