.toFixed()
返回一个字符串(参见MDN 文档),这就是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
)。.toFixed(1)
在该操作的结果上调用。
+val
NaN
如果文本无法成功转换为数字,将返回。我认为这不会发生在你的情况下,但这可以很容易地用表达式处理
return ((+val || 0) + 1).toFixed(1);
这意味着,如果+val
计算结果为false
(包括NaN
),我们将0
改为使用。这是 JavaScript 中的一种常见模式,另请参阅 JavaScript中的“options = options || {}”是什么意思?.