如何将存储在字符串中的数值加在一起?

sri*_*dra 11 javascript

我正在尝试添加1到我的JavaScript变量中,但以下代码未提供预期结果:

var val1 = document.getElementById('<%= rng1.ClientID %>');
var val2 = val1.value + "1";
alert(val2.value);
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Fra*_*ger 19

您可以使用函数parseInt()将存储在val1.value中的字符串转换为数字:

var val2 = parseInt(val1.value) + 1;
Run Code Online (Sandbox Code Playgroud)

请注意,Number(val1.value)还会将您的值转换为数字.

-edit-
正如yc建议的那样,强烈建议使用,parseInt(val1.value, 10) + 1;因为如果你的字符串以字符串开头"0"被解释为八进制.例如.parseInt("0123") == 83而不是123

  • 不要忘记在`parseInt()`中添加第二个参数,因此它不会错误地评估为八进制. (2认同)

Ivo*_*zel 5

最简单也是首选的方法是使用+转换为数字.

例子:

+'234'; // 234
+'042'; // 42! It does not convert to octal
Run Code Online (Sandbox Code Playgroud)

在你的情况下:

var val1 = +(document.getElementById('<%= rng1.ClientID %>').value); // () added just for the looks
var val2 = val1.value + 1; // if val1 is 5, val2 will be 6 hooray!
alert(val2); // just val2, since it's a plain number not an html input element
Run Code Online (Sandbox Code Playgroud)