下面有jquery \else比较,用于根据结果对部分代码进行评估,
if($('#order_quantity').val() < $('#available_quantity').val()) {
// ---code to run----
} else {
// --- code to show error---
}这段代码对输入正确地工作3-4次,在此之后,它的工作错误,
当$('#order_quantity').val() = 5和$('#available_quantity').val() = 46,理想情况下,--要运行的代码--应该执行,但它运行的是--显示错误的代码--语句的。
有时是正确的,有时不是,我为上面的输入值创建了console.log,输入是正确的,但是比较结果仍然会抛出错误的结果。
这个比较会有什么问题呢?
发布于 2015-10-04 07:38:10
从DOM读取的值是字符串。您需要将其转换为数字,以便在算术操作中使用,除非运算符强制操作数。
if(+$('#order_quantity').val() < +$('#available_quantity').val())可以使用以下方法将字符串转换为数字
+运算符,这将强制字符串为数字。Number函数parseFloatparseInt,但这将将浮点值转换为整数。此代码对输入正确工作3-4次,并在此之后工作错误。
代码适用于某些值,因为字符串是如何进行比较的。
> "5" < "46" // false字符串按字符进行比较,就像排序一样。在这段代码中,比较是以'5' < '4'的形式进行的,当比较字符串时,会比较它们的ASCII值。由于5的ASCII值大于4的值,所以比较返回false。
发布于 2015-10-04 07:38:17
val()返回一个字符串。您必须将这些字符串值转换为数字:
if(Number($('#order_quantity').val()) < Number($('#available_quantity').val())) {
// do something
} else {
// do something
}当表达式失败时的示例:
"24" < "124"
false还有其他将字符串转换为数字的方法(请参阅在JavaScript中将字符串转换为数字的最快方法是什么?):
Number(x)parseInt(x, 10) (用于整数)parseFloat(x)+x;~~x (用于整数)x | 0 (用于整数)...or使用Math方法。x是字符串值。
发布于 2015-10-04 07:41:29
您需要将字符串转换为整数,因为使用jQuery val()方法读取的所有值都作为字符串返回。
你也可以使用这个代码-
if(parseInt($('#order_quantity').val()) < parseInt($('#available_quantity').val()))https://stackoverflow.com/questions/32931134
复制相似问题