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。 我该如何解决这个问题?
答案 0 :(得分:8)
如果它是浮点类型,请使用parseFloat(a) + parseFloat(b)
;对于整数类型,请使用parseInt(a, 10) + parseInt(b, 10)
。
答案 1 :(得分:3)
默认情况下,Javascript会始终将输入解释为字符串。
通过使用内置的parseXXX()函数或者只是按照此page的建议将值乘以1,有几种解决方法。
答案 2 :(得分:3)
问题在于,您的代码正在+
和a
上执行字符串连接操作(在字符串上使用b
)。
您需要明确指定,您希望在+
和a
上执行添加(对数字使用b
。
将添加功能更改为:
function add(a,b) {
equals.value = Number(a) + Number(b);
}
答案 3 :(得分:2)
这更简单。
只需将每个输入的值乘以1即可将其转换为数字。
input1 = calculator.input1*1;
input2 = calculator.input2*1;
或减去零
input1 = calculator.input1-0;
input2 = calculator.input2-0;
注意:感谢Matthew提示;)