如何使用javascript(jquery)将整数值添加到返回字符串的值?


91

我有一个简单的html块,例如:

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

我正在尝试使用jquery向值(8)添加1。

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

发生的事情是这样的:

81

然后

811

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

Answers:


186

parseInt()会将其强制为整数类型,如果无法执行转换,则将强制为NaN(非数字)。

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

第二个参数(基数)确保将其解析为十进制数。


10
注意parseInt(),它将“ 010”识别为9(将以零开头的值解析为八进制)。
MightyE

3
Bleh,“ 010”解析为8(而不是8)
MightyE 2010年

7
@Jacob Relkin:因为这很有用,所以我只给了他+1。如果您知道更好的答案,可惜您没有分享。
ANeves认为SE是邪恶的2011年

1
除非它检测到前导零,否则它将变为八进制。接受用户输入时的简单故障。
Diodeus-詹姆斯·麦克法兰(James MacFarlane)

1
只要您使用第二个参数指定基数,它就可以正常工作: parseInt("010", 10)返回十。
jahroy 2012年

29

Parse int是您应在此处使用的工具,但像任何工具一样,它也应正确使用。使用parseInt时,应始终使用radix参数以确保使用正确的基数

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

27

该整数将被转换为字符串,而不是相反。你要:

var newValue = parseInt(currentValue) + 1

12

parseInt在IE中不适用于我。所以我只是在想要作为整数的变量上使用+。

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

4

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

parseInt(parseFloat(nv))

在用前导零进行测试后,每次都以正确的表示形式返回。

希望这可以帮助。


2

您的代码应如下所示:

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

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

技巧与技巧




1

您可以将变量乘以1,以强制JavaScript将变量转换为数字,然后将其添加到其他值。之所以可行,是因为乘法不会像加法那样过载。有人可能会说这还不及parseInt清楚,但这是一种方法,目前尚未提及。


0

只需在文本值之前添加一个加号

var newValue = +currentValue + 1;

-1

您可以使用parseInt()方法在javascript中将字符串转换为整数

您只需像这样更改代码

$("replies").text(parseInt($("replies").text(),10) + 1);

与上面发布的答案(大约10年前发布)有什么不同?
Code Maniac
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.