JavaScript输入值问题

JavaScript输入值问题,javascript,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'

以下操作未按预期工作:

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”

更改

return x + y;

在添加值之前,必须先将值转换为数字。如果数字是浮点数,则可以使用代替

Edit正如RGraham在评论中建议的那样,最好明确地传递基数(检查
parseInt
的doc)。因此,代码变为

return parseInt(x, 10) + parseInt(y, 10);
为了获得更高的准确性:

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

语法

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

参数

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

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

  function sum(x,y){

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

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

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

@Jahnux73最好使用
parseInt()
来保持数据完整性。
1+2
可能等于
3
,但
'1'+'2'
等于
'12'
。别忘了<编码>parseInt(x,10)@RGraham在编辑中提到:)
value1 = parseInt(document.getElementById('v1').value, 10);
value2 = parseInt(document.getElementById('v2').value, 10);