如何为数组分配多个值并将其添加?

时间:2011-05-15 02:16:44

标签: javascript dom

我已经实现了这个,但由于我不熟悉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循环语句在这个例子中是如何工作的!

提前致谢! :)

4 个答案:

答案 0 :(得分: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;
    }
}

答案 1 :(得分:2)

var inputsValue = "";
for (var i = 0; i < inputs.length; i++){
    inputsValue += inputs[i];
}

答案 2 :(得分: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

答案 3 :(得分:1)

更好的方法是将每个输入的ID命名为:id="element0",或者通常为:id="element<n>"

这样你可以去:

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