2011-02-04 43 views
10

我想补充1我的JavaScript变量,但下面的代码没有给出预期的结果:如何将存储在字符串中的数字值相加?

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

我怎样才能做到这一点?

+2

您是否试图在数学上添加一个? IE浏览器。 3 + 1 = 4或者在字符串的末尾添加“1”? IE浏览器。 “3”+“1”=“31”。 – anothershrubery 2011-02-04 11:24:56

+0

您正在给`val2`分配一个字符串或一个数字。因此,它不是一个对象,也没有属性“值”。如果您想知道为什么存在`val1.value`:`val1`持有对某个具有`value`属性的HTML表单元素的引用。 – 2011-02-04 11:39:47

回答

18

,你可以使用函数parseInt函数()存储在val1.value字符串转换成一个数字:

var val2 = parseInt(val1.value) + 1; 

注意Number(val1.value)也将转换您的值转换成一个数字。

CNC中
作为YC建议,强烈建议使用parseInt(val1.value, 10) + 1;因为如果你的字符串以"0"字符串被解释为八进制开始。例如。 parseInt("0123") == 83而不是123

+2

不要忘记在`parseInt()`中添加第二个参数为10,所以它不会错误地评估为八进制。 – Yahel 2011-02-04 11:23:58

+1

更好的是,如果你不需要,就不要使用`parseInt()`,只需使用`+`或`Number()`,而不是那些解析八进制数。例如`+ val1.value + 1`。 ``parseInt()`主要用于从字符串的开头提取数字,所以只要您的字符串是有效的数字字面量,您就不需要它。 – 2011-02-04 11:32:47

0

必须添加号码,因此尝试没有引号:-)

5

最简单也是最好的方法是使用+投了一些。

例子:

+'234'; // 234 
+'042'; // 42! It does not convert to octal 

你的情况:

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 
0

在外部JavaScript文件,你不能使用<%=ControlID.ClientID %>获取客户端ID。

如果您使用外部JavaScript文件,则需要将客户端ID值传递给该函数。

1
parseInt($('.scpContainer').height()+200) 
相关问题