首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jquery如果不是比较查询问题

jquery如果不是比较查询问题
EN

Stack Overflow用户
提问于 2015-10-04 07:35:31
回答 5查看 588关注 0票数 1

下面有jquery \else比较,用于根据结果对部分代码进行评估,

代码语言:javascript
复制
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,输入是正确的,但是比较结果仍然会抛出错误的结果。

这个比较会有什么问题呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-10-04 07:38:10

从DOM读取的值是字符串。您需要将其转换为数字,以便在算术操作中使用,除非运算符强制操作数。

代码语言:javascript
复制
if(+$('#order_quantity').val() < +$('#available_quantity').val())

可以使用以下方法将字符串转换为数字

  1. 通过在字符串前面加上一元+运算符,这将强制字符串为数字。
  2. 利用Number函数
  3. 使用parseFloat
  4. 使用parseInt,但这将将浮点值转换为整数。

此代码对输入正确工作3-4次,并在此之后工作错误。

代码适用于某些值,因为字符串是如何进行比较的。

代码语言:javascript
复制
> "5" < "46" // false

字符串按字符进行比较,就像排序一样。在这段代码中,比较是以'5' < '4'的形式进行的,当比较字符串时,会比较它们的ASCII值。由于5的ASCII值大于4的值,所以比较返回false

票数 6
EN

Stack Overflow用户

发布于 2015-10-04 07:38:17

val()返回一个字符串。您必须将这些字符串值转换为数字:

代码语言:javascript
复制
if(Number($('#order_quantity').val()) < Number($('#available_quantity').val())) {
     // do something
} else {
     // do something
}

当表达式失败时的示例:

代码语言:javascript
复制
"24" < "124"
false

还有其他将字符串转换为数字的方法(请参阅在JavaScript中将字符串转换为数字的最快方法是什么?):

  • Number(x)
  • parseInt(x, 10) (用于整数)
  • parseFloat(x)
  • +x
  • ~~x (用于整数)
  • x | 0 (用于整数)

...or使用Math方法。x是字符串值。

票数 4
EN

Stack Overflow用户

发布于 2015-10-04 07:41:29

您需要将字符串转换为整数,因为使用jQuery val()方法读取的所有值都作为字符串返回。

你也可以使用这个代码-

代码语言:javascript
复制
if(parseInt($('#order_quantity').val()) < parseInt($('#available_quantity').val()))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32931134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档