jQuery将文本作为数字

Jam*_*mes 33 variables jquery

此代码不起作用:

var number = $(this).find('.number').text();
var current = 600;
if (current > number){
     // do something
}
Run Code Online (Sandbox Code Playgroud)

HTML:

<div class="number">400</div>
Run Code Online (Sandbox Code Playgroud)

text()从类似文本的值转换为数字似乎存在一些问题.

解决办法是什么?

RoT*_*oRa 112

始终使用parseInt基数(基数)作为第二个参数,否则您将得到意外的结果:

var number = parseInt($(this).find('.number').text(), 10);
Run Code Online (Sandbox Code Playgroud)

然而,流行的变体是+用作单一运算符.这将始终转换为基数10并且永远不会抛出错误,只返回 NaN,isNaN()如果它是无效数字,可以使用该函数进行测试:

var number = +($(this).find('.number').text());
Run Code Online (Sandbox Code Playgroud)

  • `+`对于无效数字不会返回零,它将返回`NaN`.IMO,这使得它比*parseInt()*更理想,因为*parseInt*将尝试在格式错误的字符串的开头找到一个数字,这可能导致混淆(例如1,000变为1).`+ str`与写`Number(str)`相同. (7认同)

Tri*_*ack 13

myInteger = parseInt(myString);

这是一个标准的javascript函数.