2011-05-15 104 views
1

我已经实现了这个,但是因为我不熟悉FOR循环语句,所以我按照下面的方式完成了这个操作! 你能帮我缩短这段代码吗?使用FOR循环语句并解释我是如何工作的!由于如何将多个值分配给一个数组并将其添加?

这里是我的代码:

var inputs = new Array(); 
inputs["a"] = document.getElementById("a").value; 
inputs["b"] = document.getElementById("b").value; 
inputs["c"] = document.getElementById("c").value; 
inputs["d"] = document.getElementById("d").value; 
inputs["e"] = document.getElementById("e").value; 

然后我将他们添加了如:

var inputsvalue = inputs["a"] + inputs["b"] + inputs["c"] + inputs["d"] + inputs["e"]; 

请注意,我将每个输入字段的值,并将其分配到一个变量!

例如可以说该值输入字段A,B,C,d,e为如下:

1,2,3,4,5

因此,我希望它们被分配到变量“inputsvalue”就像:

var inputsvalue = "12345"; 

这就是为什么我加入他们那样!那么有没有其他方法可以做到这一点!在这个例子中,我只有5个输入字段,但是如果有大约100个输入字段呢!

这个问题的目的是学习如何FOR循环语句在这个例子中的作品!

在此先感谢! :)

+0

这不是t你感兴趣的是什么,但我认为获得'12345''部分的更快方法是只执行'var inputsvalue = inputs.join('');' – sdleihssirhc 2011-05-15 05:04:06

+0

谢谢帕特里克,是的,我不感兴趣这样做就好像有人看我的代码一样,它肯定会笑! :)))我刚刚开始学习JS,这需要很长时间才能学习,希望到明年夏天结束! :))我至少会知道JS的基本概念! – 2011-05-15 12:04:24

回答

3
// Too bad you can't use reduce. 


inputs.reduce(function(a,b){ 
    return a.concat(b); 
}) 

// If you could use reduce, you could use map, as well. 

var sum= 'abcde'.split('').map(function(itm){ 
    return document.getElementById(itm).value; 
}).reduce(function(a, b){ 
    return a.concat(b); 
}); 
alert(sum) 

/* New browsers include map and reduce- 
    you can add them to older browsers, 
    but it might make your for in loops break, 
    if you use for in loops to iterate arrays. 
*/ 

if(!Array.prototype.map){ 
    Array.prototype.map= function(fun, scope){ 
     var T= this, L= T.length, A= Array(L), i= 0; 
     if(typeof fun== 'function'){ 
      while(i< L){ 
       if(i in T){ 
        A[i]= fun.call(scope, T[i], i, T); 
       } 
       ++i; 
      } 
      return A; 
     } 
    } 
} 
if(!Array.prototype.reduce){ 
    Array.prototype.reduce= function(fun, temp, scope){ 
     var T= this, i= 0, len= T.length, temp; 
     if(typeof fun=== 'function'){ 
      if(temp== undefined) temp= T[i++]; 
      while(i < len){ 
       if(i in T) temp= fun.call(scope, temp, T[i], i, T); 
       i++; 
      } 
     } 
     return temp; 
    } 
} 
+0

谢谢!我会试试这个...非常感谢你的帮助! :) A +++ – 2011-05-15 12:06:16

1

您可以使用

var elems = document.getElementsByTagName("input"); 
    var sum = ''; 

    for(i=0; i<elems.length; i++) { 
    sum = sum + elems[i].value; 
    } 

    alert(sum); // to check your result 
2
var inputsValue = ""; 
for (var i = 0; i < inputs.length; i++){ 
    inputsValue += inputs[i]; 
} 
1

一个更好的办法来做到这一点是命名每个输入的ID是这样的:id="element0",或一般为:​​

这种方式,你可以去:

var sum = 0; 
for (i=0; i<max; i++){ 
    var elements = document.getElementById("element" + i); 
    sum += Number(elements.value); 
} 
相关问题