2015-02-11 55 views
0
function total() 
{ 
    var tot = 0; 
    for(var i = 1; i <= 20; i++) 
    { 
     var total_id = "total_" + i; 
     tot = tot + document.getElementById(total_id).value; 
    } 
    document.getElementById(total).value = tot; 
} 

全總「此代碼應顯示總。我有幾個total_i ID每一行中顯示我的總的話,我有顯示該行總到我的指定的形式總」使用JavaScript添加

回答

2

tot = tot + document.getElementById(total_id).value;

注意,元素的value是一個字符串,所以+這裏是一個字符串連接,不是加法(例如,1 + 1 = 11

如果你想要做加法(1 + 1 = 2),使用

tot = tot + parseInt(document.getElementById(total_id).value);

0

你可以取代你的代碼行tot = tot + document.getElementById(total_id).value;tot = tot + parseInt(document.getElementById(total_id).value);作爲JavaScript是把它作爲一個字符串不是INTEGR值。我們可以使用parseInt()將其轉換爲整數。

0

正如另一個答案中提到的,您的直接問題是您要添加字符串,尤其是字符串DOM元素上的value屬性。你會發現任何關於這個問題的問題。

如果您在數組中的元素,尋找和剛剛成爲

function add(a, b) { return a + b; } 
function sum(array) { return array.reduce(add); } 

sum(elements.map(function(elt) { return +elt.value; }); 

但是,你也可用使用的ID作爲識別和轉診來的,窮人的方式的反模式DOM元素。最好只是在創建和添加元素時記住元素本身(如果實際上這是它們被創建的方式)。這樣,您不必花費剩餘的實時構建ID並將其添加到元素,然後再次構建它們以傳遞到getElementById以再次找到它們。通過「記憶元素本身爲您創建它們」,我的意思,而不是做這樣的事情:

for (i=0; i<n; i++) { 
    var elt = document.createElement('div'); 
    elt.setAttribute('id', 'total_' + i); 
    parent.appendChild(elt); 
} 

或等值jQuery的,這樣做

var elements = []; 
for (i=0; i<n; i++) { 
    var elt = document.createElement('div'); 
    elements.push(elt); 
    parent.appendChild(elt); 
} 

現在你有數組元素本身,並且您不必每次訪問getElementById時都會用到它們。