2011-05-15 6 views
1

J'ai déjà implémenté ceci, mais comme je ne suis pas familier avec l'instruction de boucle FOR, je l'ai fait de cette manière comme montré ci-dessous! Pouvez-vous s'il vous plaît m'aider à raccourcir ce code en utilisant la déclaration de la boucle FOR et expliquez-moi comment cela fonctionne! MerciComment assigner plusieurs valeurs à un tableau et les additionner?

Voici mon code:

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; 

Et puis je les ai ajouté comme:

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

Notez que j'ajoute la valeur de chaque champ d'entrée et de les affecter en une variable!

Par exemple permet de dire les valeurs des champs de saisie a, b, c, d, e sont les suivantes:

1, 2, 3, 4, 5

Je veux donc qu'ils soient affectés à la variable "inputsvalue" comme:

var inputsvalue = "12345"; 

C'est pourquoi je les ai ajoutés comme ça! Donc, y a-t-il un autre moyen de le faire! Dans cet exemple, je n'ai que 5 champs de saisie, mais que se passerait-il s'il y avait environ 100 champs de saisie!

Le but de cette question est d'apprendre comment l'instruction FOR loop fonctionne dans cet exemple!

Merci d'avance! :)

+0

Il n'y a pas t ce qui vous intéressait, mais je pense qu'un moyen plus rapide d'obtenir la partie '' 12345 "' serait de faire 'var inputsvalue = inputs.join ('');' – sdleihssirhc

+0

Merci Patrick, oui je ne suis pas intéressé en faisant ça comme si quelqu'un regardait mon code ça rirait à coup sûr! :))) Je viens de commencer à apprendre JS et cela prend du temps pour que j'apprenne, j'espère que d'ici la fin de l'été prochain! :)) Je connaîtrais au moins les concepts de base de JS! –

Répondre

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

Merci! Je vais essayer ça ... j'apprécie vraiment votre aide! :) A +++ –

1

Vous pouvez utiliser

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

Une meilleure façon de le faire est de nommer id chaque entrée de quelque chose comme: id="element0", ou de manière générale: id="element<n>"

De cette façon, vous pouvez aller:

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