javascript如果数字大于数字

时间:2012-10-26 01:30:27

标签: javascript forms

我有这个javascript函数来验证数字是否大于另一个数字

function validateForm() {
    var x = document.forms["frmOrder"]["txtTotal"].value;
    var y = document.forms["frmOrder"]["totalpoints"].value;

    if (x > y) {
        alert("Sorry, you don't have enough points");
        return false;
    }
}

由于某种原因它不起作用。

如果我alert(x)我得到1300,alert(y)得到999

这有效....

function validateForm() {
    var x = 1300;
    var y = 999;

    if (x > y) {
        alert("Sorry, you don't have enough points");
        return false;
    }
}

4 个答案:

答案 0 :(得分:51)

您应该在比较之前将它们转换为数字。

尝试:

if (+x > +y) {
  //...
}

if (Number(x) > Number(y)) {
  // ...
}

注意: parseFloatpareseInt(对于比较整数,您需要指定基数)将为NaN提供一个空字符串,与NaN进行比较将始终为false,如果您不想将空字符串视为0,那么您可以使用它们。

答案 1 :(得分:3)

您可以使用数字构造函数“转换”为数字。

var number = new Number("8"); // 8 number

你也可以调用parseInt内置函数:

var number = parseInt("153"); // 153 number

答案 2 :(得分:3)

您正在比较字符串。 JavaScript会比较字符串中每个字符的ASCII代码。

要了解为什么会出错,请查看charCodes:

"1300".charCodeAt(0);
49
"999".charCodeAt(0);
57

比较结果为false,因为在比较字符串时,1的字符代码不大于9的字符代码。

修复方法是将字符串视为数字。您可以使用多种方法:

parseInt(string, radix)
parseInt("1300", 10);
> 1300 - notice the lack of quotes


+"1300"
> 1300


Number("1300")
> 1300

答案 3 :(得分:1)

这样做。

var x=parseInt(document.forms["frmOrder"]["txtTotal"].value);
var y=parseInt(document.forms["frmOrder"]["totalpoints"].value);