javascript“小于”if语句失败

时间:2012-12-27 15:15:39

标签: javascript if-statement

这是我的功能:

function reCalculate(i) {
    document.getElementById("Q" + i).value = document.getElementById("C" + i).value - document.getElementById("QA" + i).value;

    if (document.getElementById("Q" + i).value < 0) {
        document.getElementById("Q" + i).value = 0;
    }
    if (document.getElementById("Q" + i).value < document.getElementById("E" + i).value && document.getElementById("Q" + i).value != 0) {
        alert(document.getElementById("Q" + i).value + " is less than " + document.getElementById("E" + i).value + "?");
        document.getElementById("Q" + i).value = document.getElementById("E" + i).value;
    }
    document.getElementById("Q" + i).value = Math.ceil(document.getElementById("Q" + i).value);
}

它检查Q,如果它小于0,则使其为0.然后,如果它不是0,但它小于E,则它成为E.对于某些这个功能起作用的原因除非Q是一个两位数字。

例如,如果Q为7且E为2,则将Q保留为7.但是,如果Q为10且E为2,则由于某种原因它认为10 <2,并且它将Q更改为2 !

我在这里错过了什么吗?

4 个答案:

答案 0 :(得分:9)

当你拉出元素的.value时,它会返回一个字符串。 '10'<'2'将返回true。

你可以简单地对值ala

做一个parseInt / parseFloat
var q = parseInt(document.getElementById("Q"+i).value,10)

答案 1 :(得分:4)

这是因为它在比较时将您的Q视为字符串

请尝试以下方法:

function reCalculate(i){

    var Z = document.getElementById, P = parseInt; 

    var qElem = Z("Q"+i);
    var q = P(qElem.value, 10);
    var c = P(Z("C"+i).value, 10);
    var qa = P(Z("QA"+i).value, 10);
    var e = P(Z("E"+i).value, 10);

    q = c - qa;

    if (q < 0) qElem.value = 0;

    if (q < e && q != 0){
        alert(q+" is less than "+e+"?");
        qElem.value = e;
    }

    qElem.value = Math.ceil(q);
}

答案 2 :(得分:1)

可能你应该做一个

parseFloat(document.getElementById("Q"+i).value)

确保您正在比较数字

答案 3 :(得分:0)

您正在比较字符串而不是数字。使用一元+转换为数字:

if (+document.getElementById("Q" + i).value < +document.getElementById("E" + i).value ...)

你应该使用变量:

var input_one = document.getElementById("Q" + i).value,
    input_two = document.getElementById("E" + i).value;

if (+input_one < +input_two) {

}