11548 sujets

JavaScript, DOM et API Web HTML5

Salut a tous , oui oui vous avez bien lut le titre Smiley smile

J'utilise un formulaire dans lequel j'ai un fieldset , tous les éléments sont placé via un css qui est affecté au formulaire ...

le code allègé :
<html>
<head>
<script language="JavaScript"><!--
function clicTous(form,booleen,nomelement)
  {
  for (i=0, n=form.elements.length; i<n; i++)
  if (form.elements[i].name.indexOf(nomelement) != -1)
    form.elements[i].checked = booleen;
  }
//--></script>

</head>

<body>
  <form name="formulaire">
  <fieldset>
  <legend>test de selection / deselction</legend>
    <input type="checkbox" onClick="if (this.checked) { clicTous(this.form,true,'case') } else { clicTous(this.form,false,'case') };"> Sélection/déselection globale<br>
    <input type="checkbox" name="case[]">1<br>
    <input type="checkbox" name="case[]">2
	</fieldset>
  </form>
</body>
</html>


la sélection ne se fait pas et me renvois un message d'erreur ( sous firefox et sous ie )
Erreur : form.elements.name has no properties

je cherche je cherche , je met le strict minimum j'enlève donc UNIQUEMENT le fieldset et la miracle , le script fonctionne parfaitement
si quelqu'un pouvais m'expliquer pourquoi ???????
et me trouver une solution AVEC el fieldset ^^

coordialement
[/i][/i]
Bonjour,

Le problème est que tu considère qu'il y a plusieurs éléments dans ton formulaire mais un seul formulaire dans ta page.

  for (i=0, n=forms[0].elements.length; i<n; i++)

etc...
nop problème résolut Smiley smile
il fallait identifier le TYPE d'élément Smiley smile
car en ajoutant le fieldset , il le considère commet un élément du formulaire mais n'étant pas une checkbox, plantage.

solution :

function clicTous(form,booleen)
{
for (i=0, n=form.elements.length; i<n; i++){
if (form.elements.type =="checkbox")
form.elements[i].checked = booleen;
}
}

Merci Smiley smile
[/i]
C'est plutot (avec form.elements.type, il ne faut pas oublier le [i]):

function clicTous(form,booleen)
{
for (i=0, n=form.elements.length; i<n; i++){
if (form.elements[i].type =="checkbox")
form.elements[i].checked = booleen;
}
}
[/i][/i][/i]
Modifié par dryzer (09 Jun 2006 - 14:44)