Boucle javascript

piplette Messages postés 2 Statut Membre -  
 Electron -
Bonjour,
je voulais pour réduire mon code mettre une boucle dans ce qui suit

{

if ((document.forms[0].elements[0].checked==false)
&& (document.forms[0].elements[1].checked==false)
&& (document.forms[0].elements[2].checked==false)
&& (document.forms[0].elements[3].checked==false)
&& (document.forms[0].elements[4].checked==false)
&& (document.forms[0].elements[5].checked==false)
&& (document.forms[0].elements[6].checked==false)
&& (document.forms[0].elements[7].checked==false)
&& (document.forms[0].elements[8].checked==false)
&& (document.forms[0].elements[9].checked==false)
&& (document.forms[0].elements[10].checked==false)
&& (document.forms[0].elements[11].checked==false)
&& (document.forms[0].elements[12].checked==false)
&& (document.forms[0].elements[13].checked==false)
&& (document.forms[0].elements[14].checked==false)
&& (document.forms[0].elements[15].checked==false)
)
{alert("Merci de sélectionner au moins un atelier!");
return false;

}
else
{
document.forms[0].submit();
}
}

j'ai cru que c'était ca

<script language="javascript">
<!--
function testFormulaire(form)
for (var i=0; i<=15; i++)
{

(document.forms[0].elements[i].checked==false);

{alert("Merci de sélectionner au moins un atelier!");
return false;

}
else
{
document.forms[0].submit();
}
}

//-->
</script>

mais en fait ca marche pas donc j'ai pas du comprendre correctement

quelqu'un peut il m'aider
merci beaucoup

piplette

3 réponses

  1. Electron
     
    Bonjour,
    même si le code est un peu long, il est préférable à une boucle comme vous souhaitez la faire et dont le code exact est le suivant :
    for(i = 0; i<16; i++) 
        		{ 
            		if(document.forms[0].elements[i].checked==false) 
            			{ 
    						alert("Merci de sélectionner au moins un atelier!");
    return false;
            			} 
    else
    {
    document.forms[0].submit();
    }
        		}
    }

    L'inconvénient est que cette boucle va vous générer autant de boites d'alertes qu'y aura de champs vide !
    Cordialement.
    0
  2. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    Electron,

    Mettre un return dans une boucle for, c'est tout sauf propre. D'ailleurs votre boucle ne génèrera qu'une seule boite alert à cause de ce return.
    Une syntaxe beaucoup plus claire, à mon avis, serait plutôt celle-ci :
    var atelierChecked = false;
    for(i = 0; i<16; i++)
    	atelierChecked = atelierChecked || document.forms[0].elements[i].checked;
    if (!atelierChecked)
    { 
    	alert("Merci de sélectionner au moins un atelier!");
    	return false;
    } 
    else
    {
    	document.forms[0].submit();
    }
    Xavier
    0
    1. Electron
       
      Reivax962, Bonjour,
      votre code est bien plus efficace, effectivement pour le résultat, mais ce return se trouvait dans le code original.
      Cordialement.
      0
  3. piplette Messages postés 2 Statut Membre
     
    merci beaucoup pour tous ces conseils
    0