[Javascript] Boucle for [résolu]

Boucle for [résolu] [Javascript] - HTML/CSS - Programmation

Marsh Posté le 16-07-2007 à 13:41:21    

Salut !
 
J'essaie de transformer ces lignes :
 

Code :
  1. function somme(f){ 
  2.       valeur=0;
  3.       valeur+=Math.round(100*(parseFloat(f.elements["M_MONTANT_0"].value)))/100;
  4.       valeur+=Math.round(100*(parseFloat(f.elements["M_MONTANT_1"].value)))/100;
  5.       valeur+=Math.round(100*(parseFloat(f.elements["M_MONTANT_2"].value)))/100;
  6.       valeur+=Math.round(100*(parseFloat(f.elements["M_MONTANT_3"].value)))/100;
  7.       valeur+=Math.round(100*(parseFloat(f.elements["M_MONTANT_4"].value)))/100;
  8.       valeur+=Math.round(100*(parseFloat(f.elements["M_MONTANT_5"].value)))/100;
  9.       if(isNaN(valeur)){return false} else {return true}
  10. }


 
en une boucle for, j'ai essayé ceci sans succès :
 

Code :
  1. function somme(f){
  2.       valeur=0;
  3.       for (i=0; i<f.elements["NB_ELEMENTS"]; i++){
  4.            valeur+=Math.round(100*(parseFloat(f.elements["M_MONTANT_"+i].value)))/100;
  5.       }
  6.       if(isNaN(valeur)){return false} else {return true}
  7. }


 
---------------------------------------------
 
Voici ma page complète pour information :
 

Code :
  1. <HTML>
  2. <HEAD>
  3. <SCRIPT LANGUAGE="JavaScript">
  4. var valeur=0;
  5.        
  6. function somme(f){
  7.    //for (i=0; i<f.elements["NB_ELEMENTS"]; i++){  
  8.       valeur=0;
  9.       valeur+=Math.round(100*(parseFloat(f.elements["M_MONTANT_0"].value)))/100;
  10.       valeur+=Math.round(100*(parseFloat(f.elements["M_MONTANT_1"].value)))/100;
  11.       valeur+=Math.round(100*(parseFloat(f.elements["M_MONTANT_2"].value)))/100;
  12.       valeur+=Math.round(100*(parseFloat(f.elements["M_MONTANT_3"].value)))/100;
  13.       valeur+=Math.round(100*(parseFloat(f.elements["M_MONTANT_4"].value)))/100;
  14.       valeur+=Math.round(100*(parseFloat(f.elements["M_MONTANT_5"].value)))/100;
  15.    //}
  16.    if(isNaN(valeur)){return false} else {return true}
  17. }
  18. function Start_somme(){
  19.    var f=document.forms["ics"];
  20.    if(somme(document.forms["ics"])){
  21.       document.forms["ics"].elements['TOTAL_COTIS'].value=valeur
  22.    }
  23.    setTimeout("Start_somme()",100)
  24. }
  25. </SCRIPT>
  26. </HEAD>
  27. <BODY onload="Start_somme()">
  28. <FORM ACTION="" METHOD=POST name=ics>
  29. <INPUT TYPE=hidden NAME="NB_ELEMENTS" VALUE="6" SIZE=10>
  30. Élément A : <INPUT TYPE=text NAME="M_MONTANT_0" VALUE="0" SIZE=10><BR>
  31. Élément B : <INPUT TYPE=text NAME="M_MONTANT_1" VALUE="0" SIZE=10><BR>
  32. Élément C : <INPUT TYPE=text NAME="M_MONTANT_2" VALUE="0" SIZE=10><BR>
  33. Élément D : <INPUT TYPE=text NAME="M_MONTANT_3" VALUE="0" SIZE=10><BR>
  34. Élément E : <INPUT TYPE=text NAME="M_MONTANT_4" VALUE="0" SIZE=10><BR>
  35. Élément F : <INPUT TYPE=text NAME="M_MONTANT_5" VALUE="0" SIZE=10><BR>
  36. <BR>
  37. TOTAL : <INPUT TYPE=text NAME=TOTAL_COTIS VALUE="0" SIZE=10>
  38. </FORM>
  39. </BODY>
  40. </HTML>


 
 
Est-ce que vous sauriez comment faire ?
 
 
edit: je viens de me rendre compte que le pb venait de la présence de f.elements["NB_ELEMENTS"]
dans cette ligne :
for (i=0; i<f.elements["NB_ELEMENTS"]; i++){  
 
je viens d'essayer de la remplacer par  
var nbelements=document.forms["ics"].elements['NB_ELEMENTS'].value;
en entête et  
for (i=0; i<nbelements; i++){
 
mais sans succès non plus


Message édité par sire de Botcor le 16-07-2007 à 13:53:27

---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Marsh Posté le 16-07-2007 à 13:41:21   

Reply

Marsh Posté le 16-07-2007 à 13:53:13    

Ok, problème résolu de cette manière :
 

Code :
  1. <HTML>
  2. <BODY onload="Start_somme()">
  3. <SCRIPT LANGUAGE="JavaScript">       
  4. function somme(f){
  5.    nb_elements=document.forms["ics"].elements['NB_ELEMENTS'].value;
  6.    valeur=0;
  7.    for (i=0; i<nb_elements; i++){
  8.       valeur+=Math.round(100*(parseFloat(f.elements["M_MONTANT_"+i].value)))/100;
  9.    } 
  10.    if(isNaN(valeur)){return false} else {return true}
  11. }
  12. function Start_somme(){
  13.    var f=document.forms["ics"];
  14.    if(somme(document.forms["ics"])){
  15.       document.forms["ics"].elements['TOTAL_COTIS'].value=valeur
  16.    }
  17.    setTimeout("Start_somme()",100)
  18. }
  19. </SCRIPT>
  20. <FORM ACTION="" METHOD=POST name=ics>
  21. <INPUT TYPE=hidden NAME="NB_ELEMENTS" VALUE="6" SIZE=10>
  22. Élément A : <INPUT TYPE=text NAME="M_MONTANT_0" VALUE="0" SIZE=10><BR>
  23. Élément B : <INPUT TYPE=text NAME="M_MONTANT_1" VALUE="0" SIZE=10><BR>
  24. Élément C : <INPUT TYPE=text NAME="M_MONTANT_2" VALUE="0" SIZE=10><BR>
  25. Élément D : <INPUT TYPE=text NAME="M_MONTANT_3" VALUE="0" SIZE=10><BR>
  26. Élément E : <INPUT TYPE=text NAME="M_MONTANT_4" VALUE="0" SIZE=10><BR>
  27. Élément F : <INPUT TYPE=text NAME="M_MONTANT_5" VALUE="0" SIZE=10><BR>
  28. <BR>
  29. TOTAL : <INPUT TYPE=text NAME=TOTAL_COTIS VALUE="0" SIZE=10>
  30. </FORM>
  31. </BODY>
  32. </HTML>


 
Il fallait tout simplement mettre la variable nbelements dans la fonction et non en globale :jap:


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed