0

以下不按预期工作:

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”

4

4 回答 4

6

改变

return x + y;

return parseInt(x) + parseInt(y);

在添加它们之前,您必须先将值转换为数字。如果数字是浮点数,您可以使用parseFloat而不是parseInt.

编辑正如 RGraham 在评论中所建议的那样,parseInt明确地传递基数(检查文档)总是更好。所以,代码变成

return parseInt(x, 10) + parseInt(y, 10);
于 2013-10-30T12:37:08.800 回答
2

您需要将您的值解析为 int,因为所有值都在 javascript 中作为字符串传递。

value1 = parseInt(document.getElementById('v1').value, 10);
value2 = parseInt(document.getElementById('v2').value, 10);
于 2013-10-30T12:40:12.123 回答
2

为了更准确:

  function sum(x,y){    
     return parseFloat(x) + parseFloat(y);
  }
于 2013-10-30T12:38:35.617 回答
1

利用

解析整数

句法

var num = parseInt(字符串,基数);

参数

string 要解析的值。如果 string 不是字符串,则将其转换为 1。忽略字符串中的前导空格。

radix 一个整数,表示上述字符串的基数。始终指定此参数以消除读者混淆并保证可预测的行为。当未指定基数时,不同的实现会产生不同的结果。

  function sum(x,y){

           return parseInt(x,10) + parseInt(y,10);
        }
于 2013-10-30T12:38:46.153 回答