2011-02-04 95 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) 
相關問題