Boucle javascript

Fermé
piplette Messages postés 2 Date d'inscription mercredi 10 octobre 2007 Statut Membre Dernière intervention 15 octobre 2007 - 15 oct. 2007 à 10:45
 Electron - 15 oct. 2007 à 16:40
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

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
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
15 oct. 2007 à 12:54
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
Reivax962, Bonjour,
votre code est bien plus efficace, effectivement pour le résultat, mais ce return se trouvait dans le code original.
Cordialement.
0
piplette Messages postés 2 Date d'inscription mercredi 10 octobre 2007 Statut Membre Dernière intervention 15 octobre 2007
15 oct. 2007 à 14:02
merci beaucoup pour tous ces conseils
0