Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

[résolu] JavaScript : utilisation du onLoad


tabris

Messages recommandés

bonjour,

 

j'ai quelques difficultés à faire fonctionner une fonction grâce à l'élément onLoad. je réalise un site intranet qui fonctionne avec un CGI du nom de mapserver. j'ai plusieurs checkbox (dont vous avez peut-être entendu parler dans un autre post hier ^^) qui servent à afficher des couches de données sur une carte. ces checkbox restent cochées grâce au CGI (il me semble) lorsque la page est mise à jour par un submit.

 

mon problème est le suivant : il y a une checkbox supplémentaire servant à cocher plusieurs cases d'un clic. étant donné qu'elle n'interagit pas directement avec le CGI, elle se décoche lors de la mise à jour de la page. j'aimerais qu'elle reste cochée si les chkbox dont elle s'occupe sont toutes cochées. pour cela, j'ai essayé de faire une fonction appelée par un onLoad dans la balise body.

voici la fonction qui me pose problème et son appel :

 

function checkToutes(tabIdElements)
 {
 	var a = 0;
 	for (var i = 1 ; i < tabIdElements.length ; i++)
 	{
 	  var element = document.getElementById(tabIdElements[i]);
 	  if (element.checked == false);
 	    a = 1;
 	}
 	if (a == 0)
 	  document.getElementById(tabIdElements[0]).checked = true;
 }

<body onLoad="checkToutes(['toutes', 'spot', 'aster', 'quickb']);">

j'ai l'impression que le problème vient de la façon dont je fais référence à la chkbox "toutes" dans ma fonction mais je ne vois pas bien commment faire autrement :P

 

merci d'avance pour votre aide !

 

edit : je suis désolé, j'ai un message d'erreur lorsque je copie/colle tout mon code dans une balise codebox : / je mets donc seulement la partie qui contient les checkbox, en espérant que ça suffise :

<input type="checkbox" id="toutes" onClick="checkAll(this.checked,this.form.layer);"><label for="toutes">toutes</label><br />
<input type="checkbox" name="layer" id="spot" value="SPOT" onclick="if (this.checked) { checkSelect(['spot1', 'spot2', 'spot3', 'spot4', 'spot5']); }" [sPOT_check]><label for="spot">SPOT</label><br />
  <input type="checkbox" name="layer" id="spot1" value="SPOT1" [sPOT1_check] onClick="if (this.checked) { document.getElementById('spot').checked = false; }"><label for="spot1">SPOT 1</label><br />
  <input type="checkbox" name="layer" id="spot2" value="SPOT2" [sPOT2_check] onClick="if (this.checked) { document.getElementById('spot').checked = false; }"><label for="spot2">SPOT 2</label><br />
  <input type="checkbox" name="layer" id="spot3" value="SPOT3" [sPOT3_check] onClick="if (this.checked) { document.getElementById('spot').checked = false; }"><label for="spot3">SPOT 3</label><br />
  <input type="checkbox" name="layer" id="spot4" value="SPOT4" [sPOT4_check] onClick="if (this.checked) { document.getElementById('spot').checked = false; }"><label for="spot4">SPOT 4</label><br />
  <input type="checkbox" name="layer" id="spot5" value="SPOT5" [sPOT5_check] onClick="if (this.checked) { document.getElementById('spot').checked = false; }"><label for="spot5">SPOT 5</label><br />
<input type="checkbox" name="layer" id="aster" value="ASTER" [ASTER_check]><label for="aster">ASTER</label><br />
<input type="checkbox" name="layer" id="quickb" value="QUICKB" [QUICKB_check]><label for="quickb">QuickBird</label>

Modifié par tabris
Lien vers le commentaire
Partager sur d’autres sites

1)

if (element.checked == false);

Vu qu'il y a un point-virgule, le "a = 1" qui suit est toujours exécuté ! Ca t'apprendra à mettre des accolades autour de tes blocs if / else ... :-P

2)

<body onLoad="checkToutes(['toutes', 'spot', 'aster', 'quickb']);">

On avait pas dit que c'était des accolades pour définir des tableaux ? ... et on avait pas dit également qu'il valait mieux faire un new Array() parce que ça marchait partout ?

Lien vers le commentaire
Partager sur d’autres sites

arg comment ai-je pu le louper ? : /

tu veux dire que ça m'apprendra à ne pas mettre d'accolades plutôt non ? parce que là je n'en ai pas mis pour le if :)

 

pour la déclaration du tableau, c'est juste que j'ai trouvé comment faire sans le newArray, il fallait des crochets au lieu des accolades qu'on avait mises et qui n'avaient pas marchées. donc j'ai bien pris note de la façon propre que tu m'as donnée avec la déclaration complète et tout et tout (d'ailleurs je l'ai remise pour garder la méthode la plus claire) et j'ai essayé avec la version simplifiée pour voir ^^

 

merci beaucoup pour ton aide

Modifié par tabris
Lien vers le commentaire
Partager sur d’autres sites

arg comment ai-je pu le louper ? : /

tu veux dire que ça m'apprendra à ne pas mettre d'accolades plutôt non ? parce que là je n'en ai pas mis pour le if :)

Euh... Oui, tout dépend comment on l'entend, mais en effet ça devrait plutôt être "ça t'apprendra à pas les mettre" :-P
il fallait des crochets au lieu des accolades qu'on avait mises
ARGH. Tu as parfaitement raison, en JavaScript on doit utiliser des crochets pour déclarer des tableaux en inline. Je me suis complètement fourvoyé parce qu'en Java ce sont des accolades qui sont utilisées !

Mille excuses.

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...