2012-07-27 49 views
1

我试图做我从id得到的值的总和,但它不断追加第二个值,而不是它应该做的总和。为什么我的输入值不能总和?

实施例23 + 25 = 2325

赫雷什我的代码:

这是使用求和的代码IM。

 $('input').blur(function() { 
      for (var i=1; i<=value; i++) { 

       var one = document.getElementById("veb_blocos-"+i).value; 
       var two = document.getElementById("veb_pellet-"+i).value; 
       var sum1 = one+two; 
       document.getElementById("total1-"+i).value = sum1; 
      }; 

     }); 
+0

[提示]当发布这样的问题,请创建一个小提琴http://jsfiddle.net帮助我们创建更简单/更快的解决方案。 – axcdnt 2012-07-27 18:07:13

+0

[Addition vs. Concatenation](http://jqfundamentals.com/#example-2.8) – jbabey 2012-07-27 18:11:27

+0

相关:[为什么我在javascript中添加2 + 4时得到24](http://stackoverflow.com/questions/1225161 /为什么要做我得到24当时加入2-4在JavaScript中) – 2014-05-24 08:45:22

回答

3
由于

输入的值是字符串。将其转换为int。

$('input').blur(function() { 
    for (var i=1; i<=value; i++) { 

     var one = document.getElementById("veb_blocos-"+i).value; 
     var two = document.getElementById("veb_pellet-"+i).value; 
     var sum1 = parseInt(one,10)+parseInt(two,10); 
     document.getElementById("total1-"+i).value = sum1; 
    }; 

}); 
+0

短而甜,就像我喜欢我的女人。 – 2012-07-27 18:05:43

7

尝试这种情况:

var one = parseInt(document.getElementById("veb_blocos-"+i).value, 10); 
var two = parseInt(document.getElementById("veb_pellet-"+i).value, 10); 
+0

请使用基数。 – 2012-07-27 18:04:59

+0

是的,你说得对,谢谢! – dfsq 2012-07-27 18:05:50

+0

是的,它工作得很好。只是一个问题。当我只输入一个输入时,它给出的总输入值为“NaN”。非常感谢 – JonnyDevv 2012-07-27 18:08:05

1

尝试:

$('input').blur(function() { 
      for (var i=1; i<=value; i++) { 

       var one = parseInt(document.getElementById("veb_blocos-"+i).value); 
       var two = parseInt(document.getElementById("veb_pellet-"+i).value); 
       var sum1 = one+two; 
       document.getElementById("total1-"+i).value = sum1; 
      }; 

     }); 
1

这是因为你的值是字符串数据类型而不是数字类型。你需要先解析它们。

$('input').blur(function() { 
      for (var i=1; i<=value; i++) { 

       var one = parseFloat(document.getElementById("veb_blocos-"+i).value); 
       var two = parseFloat(document.getElementById("veb_pellet-"+i).value); 
       var sum1 = one+two; 
       document.getElementById("total1-"+i).value = sum1; 
      }; 

     }); 
2

这里是最安全的可能的解决方案(假设请求的DOM节点存在):

$('input').blur(function() { 
    var i = 0, 
     one = 0, 
     two = 0; 
    for (i = 1; i <= value; i += 1) { 
     one = Number(document.getElementById("veb_blocos-" + i).value); 
     two = Number(document.getElementById("veb_pellet-" + i).value); 
     if (isNaN(one)) { 
      one = 0; 
     } 
     if (isNaN(two)) { 
      two = 0; 
     } 
     document.getElementById("total1-" + i).value = one + two; 
    }; 
}); 
相关问题