如何添加一个整数值与JavaScript(jQuery)到一个返回一个string的值?

我有一个简单的HTML块,如:

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

使用jquery我试图添加1的值(8)。

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

发生什么事情是这样出现的:

81

然后

811

不是9,这将是正确的答案。 我究竟做错了什么?

parseInt()将强制它是整数types,或者如果它不能执行转换,将会是NaN(不是数字)。

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

第二个参数(radix)确保它被parsing为一个十进制数。

parsingint是你应该在这里使用的工具,但像任何工具,它应该正确使用。 使用parseInt时,应始终使用radix参数以确保使用正确的基数

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

整数正在转换成一个string,而不是反之亦然。 你要:

 var newValue = parseInt(currentValue) + 1 

parseInt在IE中不适用于我。 所以我简单地使用+作为整数你想要的variables。

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

关于.js的八进制误解 – 我只是用这个…

 parseInt(parseFloat(nv)) 

经过前导零的testing后,每次都有正确的表示。

希望这可以帮助。

你的代码应该是这样的:

 <span id="replies">8</span> var currentValue = $("#replies").text(); var newValue = parseInt(parseFloat(currentValue)) + 1; $("replies").text(newValue); 

黑客N技巧

增加一个你可以做的事情

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

我简单地解决了你的月问题,getMonth数组从0到11开始。

您可以将variables乘以1来强制JavaScript将variables转换为您的数字,然后将其添加到您的其他值。 这是有效的,因为乘法不会因为加法而过载。 有人可能会说这不像parseInt清楚,但它是一种方法,它还没有被提及。

简单地说,在文本值之前添加一个加号

 var newValue = +currentValue + 1;