2015-02-11 54 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时都会用到它们。