2013-10-30 78 views
0

下不能按預期工作:JavaScript的輸入值問題

function sum(x,y){ 
    return x + y; 
} 

document.getElementById('submit').onclick = function(e) 
{ 

    //do someting 
    e.stopPropagation(); 

    var value1 = document.getElementById('v1').value, 
    value2 = document.getElementById('v2').value; 

    var newSum = sum(value1, value2); 
    console.log(newSum); 

} 

也有一些是錯誤的被拾起的值。它應該返回的總和,而不是 「1 + 2 = 12」

+0

@ Jahnux73它更好地使用'parseInt函數()'以保持數據的完整性。 – BenM

+0

'1 + 2'可以等於'3',但'1'+'2'等於'12'。 – David

回答

6

變化

return x + y; 

return parseInt(x) + parseInt(y); 

你必須將這些值轉換爲數字第一,加入他們。如果數字是花車,您可以使用parseFloat而不是parseInt

編輯正如意見建議的RGraham,它始終是更好地傳遞基數(檢查parseInt的DOC)明確。因此,代碼變

return parseInt(x, 10) + parseInt(y, 10); 
+0

不要忘記[指定基數](http://stackoverflow.com/questions/850341/how-do-i-work-around-javascripts-parseint-octal-behavior)! 'parseInt(x,10);' – CodingIntrigue

+1

@Rraham提到在編輯:) – thefourtheye

2

爲了更準確:

function sum(x,y){  
    return parseFloat(x) + parseFloat(y); 
    } 
1

使用

parseInt

語法

VAR NUM = parseInt函數(字符串,基數);

參數

解析值。如果字符串不是字符串,那麼它將被轉換爲一個字符串。字符串中的空白字符將被忽略。

基數 一個整數,表示上述字符串的基數。始終指定此參數以消除讀者的困惑並保證可預測的行爲。未指定基數時,不同的實現會產生不同的結果。

function sum(x,y){ 

      return parseInt(x,10) + parseInt(y,10); 
     } 
2

您需要將您的值解析爲一個int,因爲所有值都以javascript形式作爲字符串傳遞。

value1 = parseInt(document.getElementById('v1').value, 10); 
value2 = parseInt(document.getElementById('v2').value, 10);