2012-02-14 101 views
6

我需要將用戶輸入的兩個數字相加。爲此,我創建了兩個輸入字段,使用.val()從兩個單獨的變量中檢索值,然後添加它們。問題是字符串被添加,而不是數字。例如。 2 + 3變成23而不是5.請建議做什麼,除了在輸入框中使用type = number。用戶在文本字段中輸入的數字的數值

+0

可能重複[Javascript來字符串轉換爲數字?](http://stackoverflow.com/questions/2130454/javascript-to-convert-st ring-to-number) – 2012-02-14 16:11:30

回答

6

您可以使用parseInt函數(...)

例子:

var num = parseInt("2", 10) + parseInt("3", 10); 
// num == 5 
+0

如果用戶輸入'2.5'會怎麼樣?即使你假定只允許整數,請不要使用'parseInt()'而不使用第二個參數來指定base 10爲'parseInt(「2」,10)',否則如果用戶輸入前導零(例如「077」),它可能(取決於瀏覽器)被視爲八進制;如果用戶輸入一個前導「0x」,它將被視爲十六進制。 – nnnnnn 2013-06-02 02:04:24

4

使用parseInt將字符串轉換成一個數字:

var a = '2'; 
var b = '3'; 
var sum = parseInt(a,10) + parseInt(b,10); 
console.log(sum); /* 5 */ 

記住parseInt(str, rad)將只有str實際上包含很多基礎rad的,所以如果你想允許其他你會基地工作需要手動檢查它們。另外請注意,如果您想要比整數更多,則需要使用parseFloat

+0

如果'a'是''2.5''會怎麼樣?如果a是「0x77」或「077」,並且您沒有指定基數,該怎麼辦? – nnnnnn 2013-06-02 02:05:30

+0

@nnnnnn:修正了這個問題,那是我最早的答案之一,當時我並沒有意識到'parseInt'問題。 – Zeta 2013-06-08 06:20:55

0

要麼使用parseInt函數(http://www.w3schools.com/jsref/jsref_parseint.asp)或parseFloat(HTTP ://www.w3schools.com/jsref/jsref_parsefloat.asp)在添加之前轉換爲數值。 PS:這是簡單的答案。你可能想要做一些驗證/剝離/修剪等

0

號()是你想要的功能 「123A」 返回NaN

parseInt函數()截斷尾隨字母 「123A」 返回123

<input type="text" id="txtFld" onblur="if(!Number(this.value)){alert('not a number');}" /> 
相關問題