如何使用JavaScript(jQuery)将整数值添加到返回字符串值的变量中?

94
我有一个简单的 HTML 代码块,如下所示:

I have a simple html block like:

<span id="replies">8</span>

使用 jQuery,我正在尝试将值(8)加 1。

var currentValue = $("#replies").text();
var newValue = currentValue + 1;
$("replies").text(newValue);

出现的情况是这样的:

81

然后

811

而不是正确答案9。我做错了什么?

11个回答

189

parseInt()会将其强制转换为整数类型,如果无法进行转换则返回NaN(不是一个数字)。

var currentValue = parseInt($("#replies").text(),10);
第二个参数(radix)确保它被解析为十进制数字。

10
小心使用parseInt(),它会将"010"识别为9(以零开头的值会被解析为八进制)。 - MightyE
3
"010"被解析为8(而不是8)。 - MightyE
7
自从这个回答对我有用,所以我给了他另一个+1。如果你知道更好的答案,可惜你没有分享。 - ANeves
1
除非它检测到前导零,否则它会执行正常的操作。这是接受用户输入时的一个小错误。 - Diodeus - James MacFarlane
1
只要使用第二个参数指定基数,它就能正常工作:parseInt("010", 10) 返回十。 - jahroy
显示剩余3条评论

29

解析整数是您应该在此处使用的工具,但像任何工具一样,它应该被正确使用。使用parseInt时,您应始终使用基数参数以确保使用正确的进制。

var currentValue = parseInt($("#replies").text(),10);

28

这里是将整数转换为字符串,而不是相反的过程。你需要:

var newValue = parseInt(currentValue) + 1

12

在IE浏览器中,parseInt对我无效。因此,我只是在你想要作为整数的变量前使用+。

var currentValue = $("#replies").text();
var newValue = +currentValue + 1;
$("replies").text(newValue);

5

关于.js的八进制误解 - 我只是使用了这个...

parseInt(parseFloat(nv))

在测试前导零后,每次都返回正确的表示。

希望这能帮到你。


2

简单来说,在文本值前添加一个加号即可

var newValue = +currentValue + 1;

2
您的代码应该像这样:

您的代码应该像这样:

<span id="replies">8</span>

var currentValue = $("#replies").text();
var newValue = parseInt(parseFloat(currentValue)) + 1;
$("replies").text(newValue);

Hacks N Tricks


2
要将数字增加1,您可以像这样执行操作:
  var newValue = currentValue ++;

1
你可以将变量乘以1,强制JavaScript将变量转换为数字,然后将其添加到其他值中。这是因为乘法没有像加法一样重载的原因。有些人可能会说这比parseInt不够清晰,但这是一种方法,还没有被提到过。

1
var month = new Date().getMonth();
var newmon = month + 1;
$('#month').html((newmon < 10 ? '0' : '') + newmon );

我只是修复了你的月份问题,getMonth 数组从0到11开始。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接