如果数字大于数字,则为javascript
我有这个javascript函数来验证一个数字是否大于另一个数字如果数字大于数字,则为javascript,javascript,forms,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"
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;
}
}
在比较之前,您应该将它们转换为数字 尝试: 或 注意:
parseFloat
和pareseInt
(对于比较整数,您需要指定基数)将为空字符串提供NaN
,如果您不想将空字符串视为0
,则与NaN
进行比较将始终为false
,然后你可以使用它们。这样做
var x=parseInt(document.forms["frmOrder"]["txtTotal"].value);
var y=parseInt(document.forms["frmOrder"]["totalpoints"].value);
您可以使用数字构造函数“强制转换”为数字
var number = new Number("8"); // 8 number
您还可以调用parseInt内置函数:
var number = parseInt("153"); // 153 number
你在比较字符串。JavaScript比较字符串中每个字符的ASCII代码 要了解为什么会出现错误,请查看字符码:
"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
您在比较字符串,而不是数字。@MattStone:
“1300”>“999”//false
@user1689607“user1689607”>“Matt Stone”//true
-我必须查找字符串转换的确切规则。奇怪的是,一位数的数字字符串工作正常。@马特斯通,字符串比较从第一个字母开始逐字母比较字符串,1
小于9
,这就是为什么'1300'999'
。啊,对了,所以从技术上讲它仍然是一个字符串(ASCII顺序)比较。谢谢大家。请指定您希望使用…][“txtTotal”]的基数10。值为10)
Ooops,使用Number作为构造函数返回一个Number对象,并且一个对象只与自身“相等”,因此newnumber('7')==newnumber('7')
返回false
。我想你是想把它用作函数,所以Number('7')==Number('7')
。而parseInt
应始终使用基数:parseInt('153',10)
.Ohh!,关于“==”!!你是对的@RobG。。我测试了这些情况,结果很好,我发现Number对象总是隐式地调用“toString()”(实际上,我认为在内部它的调用valueOf()方法):newnumber('725')"1300".charCodeAt(0);
49
"999".charCodeAt(0);
57
parseInt(string, radix)
parseInt("1300", 10);
> 1300 - notice the lack of quotes
+"1300"
> 1300
Number("1300")
> 1300