2

我是 JavaScript 新手。这是我开始实际学习 JavaScript 的第二天。我不知道问这个问题是否合适,因为要遵循的准则和标准太多了。

好吧,在这里我写了一个小脚本,但它不起作用。当value < 5 && value > 5它显示警报时。但是当有人给出答案 5(这是正确答案)时。它没有显示任何警报?我试图自己解决这个问题,但我无法解决这个问题。这是我的代码:

<script type="text/javascript"> 
    var number = prompt("count these numbers: 2+5-10+8=?");
    if( number === 5 ) {
     alert( "Congratulations Your Answer is Correct" );
    }
    else if ( number > 5  ) {
      alert( "Your answer is a little higher." );
    }
    else if ( number < 5 ) {
      alert( "Your answer is little lower than actual answer." );
    }
</script>
4

5 回答 5

8

提示返回一个字符串,但您正在对一个数字进行严格的相等测试。

你可以...

  • number === "5"用,代替测试字符串

  • 或使用==代替===,这将为您进行转换,

  • 或将提示转换为数字number = parseInt(number, 10)

  • 或者如果您可能要测试浮点数,请使用number = parseFloat(number)

于 2012-05-27T23:48:40.927 回答
3

我建议:

var number = parseInt(prompt("count these numbers: 2+5-10+8=?"),10);
于 2012-05-27T23:49:21.033 回答
0

当您进行“===”比较时,它会检查类型是否完全匹配,在这种情况下,您正在检查 NUMBER 5 是否等于 STRING 5(或他们输入的任何其他内容),这是错误的。

正如大卫托马斯已经建议的那样,您需要将答案解析为整数:

var number = parseInt(prompt("count these numbers: 2+5-10+8=?"));
于 2012-05-27T23:56:17.240 回答
0

简单的答案是使用==而不是严格相等===

不要使用parseInt,因为它会将 say 转换5iasd5,因此您要么接受不正确的答案,要么需要额外的测试。

不要使用parseFloat,因为它不是必需的。使用==意味着以下所有条件都返回 true:

var n = 5;

n == '5'
n == '5.0'
n == '5e0'
n == '0.5e1'

等等。

哦,作为参考,你应该学习 ECMAScript抽象等式比较算法是如何工作的。

于 2012-05-28T00:17:12.880 回答
-1

试试这个:

ScriptManager.RegisterStartupScript(this, GetType(), "alertmsg", "alert('your message');", true);
于 2012-12-20T18:01:33.020 回答