加法问题,“整数”表现得像字符串

时间:2011-03-20 12:21:37

标签: javascript

    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。 我该如何解决这个问题?

4 个答案:

答案 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提示;)