2012-07-27 39 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; 
    }; 
}); 
相關問題