JavaScript的,如果数量大于NUMBER(javascript if number grea

2019-07-02 15:33发布

我有这个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;
    }
}

Answer 1:

你应该将它们转换为前比较数字。

尝试:

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

要么

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

注: parseFloatpareseInt (用于比较整数,你需要指定的基数 )会给你NaN空字符串,用比较NaN永远是false ,如果你不想把空字符串为0 ,那么你可以使用它们。



Answer 2:

你比较字符串。 JavaScript的ASCII码的字符串的每个字符进行比较。

要知道为什么你假,看看charCodes:

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

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

解决方法是把串数字。 您可以使用多种方法:

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


+"1300"
> 1300


Number("1300")
> 1300


Answer 3:

你可以在“投”到号码使用号码构造..

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

您也可以拨打parseInt函数内置函数:

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


Answer 4:

做这个。

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


文章来源: javascript if number greater than number