Boucle javascript

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,

    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
    1. Reivax962, Bonjour,
      votre code est bien plus efficace, effectivement pour le résultat, mais ce return se trouvait dans le code original.
      Cordialement.
  2. 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.