Aller au contenu

tabris

Membres
  • Compteur de contenus

    10
  • Inscription

  • Dernière visite

Tout ce qui a été posté par tabris

  1. 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
  2. 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 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>
  3. ça y est, tout fonctionne ! je mets une dernière fois mon code, si jamais quelqu'un en a besoin un jour ou l'autre. je suppose qu'il y a 100 fois plus propre que ce que j'ai mis dans la fonction checkAll mais ça a le mérite de marcher. merci encore KewlCat <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <script language="JavaScript" type="text/javascript"> //cocher toutes les checkbox function checkAll(status_checked,field) { var i; if (field.length) for (i = 0 ; i < field.length ; i++) { if (i == 0 || i == field.length-1) field[i].checked = status_checked; if (i == 0 && field[i].checked == true) checkSelect(new Array('spot1', 'spot2', 'spot3', 'spot4', 'spot5')); } else field.checked = status_checked; } //verifie et decoche des checkbox function checkSelect(tabIdElements) { for (var i = 0 ; i < tabIdElements.length ; i++) { try { var element = document.getElementById(tabIdElements[i]); element.checked = false; } catch (ex) { alert("Y'a un souci avec la valeur " + tabIdElements[i] + " !"); } } } </script> </head> <body> <!-- initialisation de mapserver --> <form name="mapserv" method="GET" action="[program]"> <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(new Array('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> </form> </body> </html>
  4. super, ça marche, merci beaucoup !! c'est déjà bien mieux comme ça mais juste un dernier détail : j'ai ma fameuse seconde fonction (checkAll) qui est censée cocher SPOT et ASTER. comment faire pour que lorsqu'elle coche SPOT, ça décoche les SPOT1-5 ? je suppose qu'il faut appeler la fonction checkSelect depuis la fonction checkAll ? je vais essayer de faire ça par moi-même et je reviendrai vers vous si je n'y parviens pas. et c'est déconseillé normalement ?
  5. j'ai cru que ça n'était que pour le message d'erreur, toutes mes confuses. donc maintenant, ma fonction checkAll semble fonctionner, mais toujours aucun signe de vie de la part de checkSelect merci de ton aide !
  6. désolé pour le double post mais j'ai l'impression qu'il va aussi y avoir des problèmes de conflit avec une autre fonction présente dans mon code, servant à cocher plusieurs checkbox. je l'ai ajoutée à mon code simlplifié : <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <script language="JavaScript" type="text/javascript"> //cocher toutes les checkbox function checkAll(status_checked,field) { var i; if (field.length) for (i = 0 ; i < field.length ; i++) if (i == 0 || i == field.length-1) field[i].checked = status_checked; else field.checked = status_checked; } //vérifie et décoche des checkbox function checkSelect(tabIdElements) { for (var i = 0 ; i < tabIdElements.length ; i++) { try { var element = document.getElementById(tabIdElements[i]); element.checked = false; } } } </script> </head> <body> <!-- initialisation de mapserver --> <form name="mapserv" method="GET" action="[program]"> <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> </form> </body> </html> cette fonction checkAll est supposée cocher les cases SPOT et ASTER uniquement. si je commente la fonction checkSelect, elle marche mais sinon non. il vaudrait peut-être mieux d'abord régler l'histoire de la fonction checkSelect qui ne marche pas mais je préfère vous soumettre ce problème supplémentaire pour ne pas avoir à revenir sur tout une fois le premier soucis résolu.
  7. oups ^^ je vais regarder ça, merci edit : le remplacement de true par false n'arrange pas le problème : /
  8. tout d'abord merci d'avoir pris du temps pour mon problème j'ai reproduis ce que tu m'as conseillé de faire et ça ne semble pas fonctionner. du coup j'ai simplifié le problème en faisant une page test avec seulement ce qui nous intéresse ici. la voici : <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <script language="JavaScript" type="text/javascript"> //vérifie et décoche des checkbox function checkSelect(tabIdElements) { for (var i = 0 ; i < tabIdElements.length ; i++) { try { var element = document.getElementById(tabIdElements[i]); element.checked = true; } } } </script> </head> <body> <input type="checkbox" name="layer" id="spot" value="SPOT" onClick="if (this.checked) { checkSelect({'spot1','spot2','spot3','spot4','spot5'}); }">SPOT<br /> <input type="checkbox" name="layer" id="spot1" value="SPOT1" onClick="if (this.checked) { document.getElementById('spot').checked = false; }">SPOT 1<br /> <input type="checkbox" name="layer" id="spot2" value="SPOT2" onClick="if (this.checked) { document.getElementById('spot').checked = false; }">SPOT 2<br /> <input type="checkbox" name="layer" id="spot3" value="SPOT3" onClick="if (this.checked) { document.getElementById('spot').checked = false; }">SPOT 3<br /> <input type="checkbox" name="layer" id="spot4" value="SPOT4" onClick="if (this.checked) { document.getElementById('spot').checked = false; }">SPOT 4<br /> <input type="checkbox" name="layer" id="spot5" value="SPOT5" onClick="if (this.checked) { document.getElementById('spot').checked = false; }">SPOT 5<br /> <input type="checkbox" name="layer" id="aster" value="ASTER">ASTER </body> </html> l'évènement onclick pour décocher la box SPOT fonctionne bien mais celui qui fait appel à la fonction et qui est censée décocher les cases SPOT1-5 lorsque l'on coche la première ne fonctionne pas. peut-être que j'ai mal fait quelque chose (sûrement en fait ^^) ?
  9. merci pour ta réponse ! effectivement, je ne sais pas trop si ce sont des crochets ou des guillemets ou autres qui sont attendus. quand tu parlais de tableau d'identifiant à passer en paramètre, comment dois-je procéder ? j'explique un peu ce que je compte faire : <input type="checkbox" name="layer" id="spot" value="SPOT" onClick="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]><label for="spot1">SPOT 1</label><br /> <input type="checkbox" name="layer" id="spot2" value="SPOT2" [sPOT2_check]><label for="spot2">SPOT 2</label><br /> <input type="checkbox" name="layer" id="spot3" value="SPOT3" [sPOT3_check]><label for="spot3">SPOT 3</label><br /> <input type="checkbox" name="layer" id="spot4" value="SPOT4" [sPOT4_check]><label for="spot4">SPOT 4</label><br /> <input type="checkbox" name="layer" id="spot5" value="SPOT5" [sPOT5_check]><label for="spot5">SPOT 5</label><br /> je souhaite que lorsque je coche la première case (SPOT), les cases qui seraient éventuellement cochées parmis les 5 autres soient décochées. à l'inverse, si jamais je coche une ou plusieurs cases parmis les 5 autres, il faudrait que la première se décoche si elle était cochée. pour info, les éléments name et [sPOTX_check] sont destinés au CGI qui est utilisé (mapserver). j'ai l'impression que j'ai mis ce qu'il faut pour chaque checkbox (id). pour le moment, j'ai testé avec la fonction que tu avais donnée qui devrait cocher les autres cases lorsque je coche la première (je sais bien que c'est l'inverse que je cherche à faire mais je voulais déjà voir si ça marchait sans rien chercher à modifier) : function checkSelect(tabIdElements) { for (var i = 0 ; i < tabIdElements.length ; i++) { try { var element = document.getElementsById(tabIdElements[i]); element.checked = true; } } } voilà, j'espère avoir été clair, n'hésitez pas à le dire si ce n'est pas le cas. merci ^^
  10. bonjour, je cherche à faire à peu près la même chose que Greywolf mais je ne sais absolument pas comment passer un tableau en paramètre, comme le conseille KewlCat. que dois-je mettre dans l'appel de ma fonction ? j'ai testé quelques trucs de ce genre, sans succès onClick="checkSelect(["spot1","spot2","spot3","spot4","spot5]");" ou encore onClick="checkSelect(spot1,spot2,spot3,spot4,spot5);" bref, toute aide est la bienvenue merci d'avance !
×
×
  • Créer...