Javascript jQuery向文本添加数字

Javascript jQuery向文本添加数字,javascript,jquery,Javascript,Jquery,我正在尝试做一些我认为非常简单的事情。将值1与数字相加 然而,数字是纯文本的,事情变得有点混乱。正如你可能猜到的,我对这一点相当陌生 我的目标是在现有分数上加1分,分数有一个小数位,如1.3。 因此,添加一个点后的期望结果是2.3。然而,我写的当前脚本返回到小数点后第二位,我不明白为什么 谢谢你的帮助 var getPoints = parseInt($('.awesome-points').text(), 10).toFixed(1); alert(getPoints); var addPoi

我正在尝试做一些我认为非常简单的事情。将值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);
Mark

.toFixed()
返回一个字符串(请参阅),这就是为什么
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()
。此功能将针对每个选定元素执行。传递给函数的第一个参数是所选元素集中元素的索引,第二个参数是当前文本内容。返回值将设置为新的文本内容。
这是一种读写文本内容的好方法,无需调用
.text()
两次

(+val+1)。toFixed(1)
的计算如下:首先
val
通过一元加号(
+val
)转换为一个数字,然后再增加一个(
+1
)<根据该操作的结果调用code>.toFixed(1)

如果文本无法成功转换为数字,
+val
将返回
NaN
。我假设在您的情况下不会发生这种情况,但这可以很容易地用表达式来处理

return ((+val || 0) + 1).toFixed(1); 

这意味着,如果
+val
的计算结果为
false
(包括
NaN
),我们将使用
0
。这是JavaScript中的一种常见模式,另请参见。

我认为您需要的是这样的模式

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

似乎这就是你的答案,toFixed()将一个数值转换成字符串,因此在你的过程中稍后使用toFixed函数

呃,问题不是很清楚,所以在你回答lol后,我不得不再次阅读3次。我仍然不知道OP到底想要什么,但鉴于他可能想要的不是返回的字符串,因此我将+您的答案:PI只是不认为有人想用分数执行字符串连接;)但是我同意,这个问题没有很好的表述。好的逻辑:)即使你永远不知道人们现在在做什么样的游戏PDidn不知道。toFixed返回了一个字符串。令人不安,但值得一票;)即使您为非数字添加保护,将其设置为
0
,例如
+x | | 0