奇怪的if语句评估行为

时间:2013-10-23 13:22:35

标签: javascript jquery

我的javascript表现得非常奇怪!

我的html文件中有一个输入字段。此输入字段由javascript以下列方式读取:

var bscore = $("#bscore").val();

然后我想在输入低于某个输入时显示警告

if(bscore<"913"){
    document.getElementById("bscorealert").style.display="block";
};

这很好用。因此,当数字高于913时,它不应显示。只有javascript表现得很奇怪,当bscore输入字段中的数字高于999(因此1000和更高)时,if语句被触发并显示警报。

这怎么可能?

2 个答案:

答案 0 :(得分:5)

这是可能的,因为你正在比较字符串,而不是整数。字符串比较是词典编纂,因此"9" > "10"等等。

在与Number(strValue)或与一元运算符+进行比较之前,您需要进行转换:

var bscore = +$("#bscore").val();    // + prefix converts to number
if (bscore < 913) ...                // no quotes around 913!

答案 1 :(得分:1)

您正在尝试比较2个字符串,它们使用字母比较。如果您在字段中输入9130和9999之间的值,则会注意到消息框也没有显示。

你必须做一个parseInt来比较数值。