代码中的JavaScript未知错误

时间:2015-08-07 19:58:42

标签: javascript html

所以我做了一个简单的猜谜游戏,数字从1-10开始。问题是,每当我猜数字正确时,它仍然说我弄错了这里是该程序的源代码。 (这是源代码的正确含义吗?)

    <!DOCTYPE HTML>
    <html>
    <head>
    <title>First Proper HTML page</title>
    </head>

    <body>

    <h3>Hello World</h3>
    <p>This is my first website</p>
    <p>Its very fun and exciting</p>
    <p><a href="http://xkcd.com" title="xkcd:Land of geeky comics!">Click here </a>
    <script>
    var randomNumber = Math.floor(Math.random(100) * 11);
    //console.log(randomNumber);
    var guess = prompt("Please guess a number 1 - 10");
    if(guess === randomNumber){
    alert("You have won! The number was " + randomNumber);
    }else{
    alert("You have guessed the wrong number, the real number was  " +              randomNumber);
    }
    </script>

    </body>
    </html>

5 个答案:

答案 0 :(得分:3)

您正在使用严格比较(===),这将评估值和类型是否相等,我相信您应该在parseInt中使用guess,如下所示:

if(parseInt(guess) === randomNumber){

答案 1 :(得分:1)

这是一个严格的比较:

if(guess === randomNumber)

如果变量的类型不同,则返回false。

在您的代码中,guess是一个字符串,因为它是prompt()的结果。 randomNumber是一个数字。由于字符串和数字不是同一类型,因此它总是返回false。

您可以通过将if条件更改为:

来解决此问题
if(guess == randomNumber)

这会导致JavaScript将guess强制转换为数字。

或者,您可以使用parseInt()parseFloat()强制执行强制,或者只需在guess前加一个加号:

if(+guess === randomNumber)

答案 2 :(得分:1)

将===更改为==。它应该有所帮助。提示中的数字是一个字符串,因此您无法与三等号进行比较。

答案 3 :(得分:0)

(===)用于相同类型的变量,例如

true

false

解决方案是,你需要使用(==)表明变量是否等于另一个变量

答案 4 :(得分:0)

当您编码时请注意缩进,当您或其他人阅读代码时,它会有很大帮助。

无论如何,这应该这样做,你做错了基本上是你调用随机函数的方式。

此外,==运算符应该足够,因为您只是比较值,===表示相等的值和相等的类型。

var randomNumber = Math.floor((Math.random() * 10) + 1);

console.log(randomNumber);

var guess = prompt("Please guess a number 1 - 10");

if(guess == randomNumber){
    alert("You have won! The number was " + randomNumber);
}else{
    alert("You have guessed the wrong number, the real number was  " + randomNumber);
}

https://jsfiddle.net/dxpme8zo/