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;
}
}
Ответы
Ответ 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