Подтвердить что ты не робот

Javascript, если число больше числа

У меня есть эта функция 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;
    }
}
4b9b3361

Ответ 1

Вы должны преобразовать их в число перед сравнением.

Try:

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

или

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

Примечание: parseFloat и pareseInt (для сравнения integer, и вам нужно указать radix), даст вам NaN для пустой строки, сравнить с NaN всегда будет false. Если вы не хотите обрабатывать пустую строку be 0, вы можете использовать их.

Ответ 2

Вы можете "наложить" на номер с помощью конструктора Number..

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

Вы также можете вызвать функцию parseInt builtin:

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

Ответ 3

Сделайте это.

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

Ответ 4

Вы сравниваете строки. 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