2011-03-20 23 views
0
var 
     calculator = document.calculator; 
      input1 = calculator.input1; 
      input2 = calculator.input2; 
      result = calculator.result; 
      equals = calculator.equals; 

    function add(a,b) { 
    equals.value = a+b; 
    } 

    result.addEventListener("click", function() { 
    add.apply(add, [input1.value, input2.value]); 
    }); 

<form name="calculator"> 
    <input type="text" name="input1" /><br /> 
    <input type="text" name="input2" /><br /> 
    <input type="button" name="result" value="result" /><br /><br /> 
    <input type="text" name="equals" readonly="true" /> 
</form> 

它只將數字一起返回 - 未添加。例如:5 + 3 = 53不是8. 我該如何解決這個問題?加法問題,像字符串一樣起作用的「整數」

+3

你永遠不會得到5 + 3 = 7。你可以得到4 + 3 = 7或5 + 2 = 7。 :) – gilly3 2011-03-20 13:33:47

回答

8

如果是浮點類型,則使用parseFloat(a) + parseFloat(b)或整數類型爲parseInt(a, 10) + parseInt(b, 10)

+0

也使用'isNaN()'來處理非數字值。 – 2011-03-20 12:25:51

+4

數字(a)+數字(b)概括爲 – 2011-03-20 12:27:30

+3

應在parseInt()上指定基數。 – 2011-03-20 12:40:53

3

默認情況下,Javascript會將輸入解釋爲字符串。

通過使用內置的parseXXX()函數或簡單地按照page推薦的值首先將值乘以1,有幾種方法可以解決此問題。

2

這更簡單。

只需將每個輸入的值乘以1即可將其轉換爲數字。

input1 = calculator.input1*1; 
input2 = calculator.input2*1; 

或減去一個零

input1 = calculator.input1-0; 
input2 = calculator.input2-0; 

注:感謝馬修的小費;)

+1

加零將會有同樣的問題,除非他最終會得到「5030」。 *減去*零將工作。 – 2011-03-20 17:16:22

3

這裏的問題是,你的代碼是做字符串連接操作(在字符串中使用+)在ab

您需要明確指定,您需要在ab上執行加法運算(在數字上使用+)。

更改您的附加功能:

function add(a,b) { 
     equals.value = Number(a) + Number(b); 
}