我正在尝试做一些事我虽然很简单。将值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);
标记
答案 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函数