为什么我的情况显示错误的结果?

时间:2014-03-14 02:47:22

标签: javascript conditional-statements

我有使用JavaScript的这个条件,我有2个文本框,我将比较输入(输入是数字)。条件是当文本框2小于文本框1时,它将有一条警告消息,表明textbox2必须大于textbox2。所以输入就像这样

textbox2  > textbox1

15  > 1  = alert pops out
15  > 2  = not ok
15  > 3  = not ok
15  > 4  = not ok
15  > 5  = not ok
15  > 6  = not ok
15  > 7  = not ok
15  > 8  = not ok
15  > 9  = not ok
15  > 10  =  ok
onwards is ok.

为什么当它比较2到9时它不会发出任何警报?

这是我的条件:

if(textbox2.value < textbox2.value)
{
    document.getElementById("lblStatus1").innerHTML = 'Pay1 must be greater than To1';
}

5 个答案:

答案 0 :(得分:3)

这里的问题是你要比较字符串,这与比较数值不同。

&#34; 15&#34;是&lt; &#34; 2&#34;因为它按字母逐字符地进行评估。领先的&#39; 1&#39;在&#39; 15&#39;原因&#39; 15&#39;要&lt; &#39; 2&#39;

答案 1 :(得分:1)

您正在比较字符串。哪个不会按你的意图运作。

使用parseInt()

if(parseInt(textbox2.value) < parseInt(textbox2.value))
{
    document.getElementById("lblStatus1").innerHTML = 'Pay1 must be greater than To1';
}

答案 2 :(得分:1)

您在解析输入值吗?如果没有,您就会对可能导致问题的字符串进行比较。像这样:

parseInt(inputVal1, 10) > parseInt(inputVal2, 10)

答案 3 :(得分:0)

如果您复制并粘贴代码......

您正在比较相同的值textbox2.value和textbox2.value。

答案 4 :(得分:0)

您遇到与验证字符串相关的问题。尝试将值解析为数字:

JsFiddle

HTML

Value 1<input type="text" id="text1" /><br />
Value 2<input type="text" id="text2" /><br /><br />
<input type="button" value="Validate" onclick="doValidate();" />

的js

function doValidate() {
    var value1 = new Number(document.getElementById("text1").value);
    var value2 = new Number(document.getElementById("text2").value);

    if (value2 < value1)
        alert("Value 2 must be higher than Value 1!");
}

请注意在JavaScript中使用 new Number()。这有效地将字符串转换为数字(如果它是有效数字)。