jQuery在文本中添加一个数字

时间:2012-05-11 23:52:28

标签: javascript jquery

我正在尝试做一些事我虽然很简单。将值1添加到数字。

然而,数字是纯文本,事情变得有些混乱。正如你可能猜到的那样,我对此很新。

我的目标是在现有分数上加1分,分数有一个小数位,例如1.3。 因此,添加点后的期望结果是2.3。但是我写的当前脚本是返回添加点到小数点后第二位,我不明白为什么。

感谢您的帮助。

var getPoints = parseInt($('.awesome-points').text(), 10).toFixed(1);
alert(getPoints);
var addPoint = 1;
var newScore = getPoints + addPoint;
$('.awesome-points').text(newScore);

标记

2 个答案:

答案 0 :(得分:9)

.toFixed()返回一个字符串(参见MDN documentation),这就是getPoints + addPoint执行字符串连接而不是添加的原因。

在执行添加后调用该方法

// unary + converts any numerical string to a number (no matter whether float
// or int)
var getPoints = +$('.awesome-points').text();
var newScore = getPoints + 1;
$('.awesome-points').text(newScore.toFixed(1));

或者更简洁:

$('.awesome-points').text(function(i, val) {
    return (+val + 1).toFixed(1);
});

这是如何运作的:

而不是将值传递给.text()you can pass a function。将对每个所选元素执行此功能。传递给函数的第一个参数是所选元素集中元素的索引,第二个参数是当前文本内容。返回值将设置为新文本内容 这是一种读取和写入文本内容的好方法,无需两次调用.text()

(+val + 1).toFixed(1)评估如下:首先val通过一元加号(+val)转换为数字,然后再增加一(+ 1)。对该操作的结果调用.toFixed(1)

如果文本无法成功转换为数字,

+val将返回NaN。我认为这不会发生在你的情况下,但这可以很容易地用表达式

来处理
return ((+val || 0) + 1).toFixed(1); 

这意味着,如果+val评估为false(包括NaN),我们会使用0。这是JavaScript中的常见模式,另请参阅What does "options = options || {}" mean in Javascript?

答案 1 :(得分:0)

我认为你想要的是这样的

var getPoints = $('.awesome-points').text();
//alert(getPoints);
var addPoint = 1;
var newScore = parseFloat(getPoints) + addPoint;
$('.awesome-points').text(newScore.toFixed(1));

似乎是你的答案,toFixed()将一个数值变成一个字符串,所以通过在你的过程中稍后制作toFixed函数