erreur dans mon script ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : erreur dans mon script ?

par Ryle » 05 juin 2006, 15:08

Parce qu'une chaine de caractères, non numérique, est toujours entourée de guillemets (ou d'apostrophes, après chacun son truc).

En fait c'est la valeur de l'id de la case que l'on passe en paramètre de la fonction. La méthode getElementById() prend cette chaine en paramètre et permet d'identifier la case dans ta page. :)

Par contre il faudrait que tu donnes plus d'infos. Quand je colle la fonction que je t'ai donné et le code source que tu as généré, directement dans un fichier html, cela me coche bien les case si la premiere est cochée

Code : Tout sélectionner

<script> function is_checked(cat, idDeLaCase) { // la case prend la valeur de la categorie document.getElementById(idDeLaCase).checked = document.getElementById(cat).checked; } </script> <li><img src="images/plus.gif" onclick="expand(this)" align="absmiddle" /><input id="1" type="checkbox" onclick="ta(this.id)" name="cat_destinataire[]" value="1" checked>E-sports <ul> <li><input id="1c1" type="checkbox" name="contact[]" value="[email protected]"><img src="images/flags/fr.gif" align="absmiddle" border="0" style="margin-right:5px;margin-left:5px;">http://www.esportsfrance.com<a href="fiche.php?id=1"><img src="images/fiche.gif" align="absmiddle" border="0" style="margin-left:5px;"></a></li> <script type="text/javascript">is_checked(1, "1c1");</script> <li><input id="1c2" type="checkbox" name="contact[]" value="[email protected]"><img src="images/flags/eu.gif" align="absmiddle" border="0" style="margin-right:5px;margin-left:5px;">http://www.xfire.com<a href="fiche.php?id=11"><img src="images/fiche.gif" align="absmiddle" border="0" style="margin-left:5px;"></a></li> <script type="text/javascript">is_checked(1, "1c2");</script> </ul> </li>

par Invité » 05 juin 2006, 11:28

pourquoi faut-il des guillemets d'ailleurs ?

par Invité » 05 juin 2006, 11:28

ça ne marche toujours pas : /

par Ryle » 02 juin 2006, 21:09

Il te manque des apostrophes ou des guillemets autour de l'id de la case concernée lorsque tu fais appel à ta fonction is_checked :)
is_checked(1, "1c2");

par Invité » 02 juin 2006, 18:07

erreur, j'ai copiée une ancienne source, voilà la bonne :

Code : Tout sélectionner

<li><img src="images/plus.gif" onclick="expand(this)" align="absmiddle" /><input id="1" type="checkbox" onclick="ta(this.id)" name="cat_destinataire[]" value="1" checked>E-sports <ul> <li><input id="1c1" type="checkbox" name="contact[]" value="[email protected]"><img src="images/flags/fr.gif" align="absmiddle" border="0" style="margin-right:5px;margin-left:5px;">http://www.esportsfrance.com<a href="fiche.php?id=1"><img src="images/fiche.gif" align="absmiddle" border="0" style="margin-left:5px;"></a></li> <script type="text/javascript">is_checked(1, 1c1);</script> <li><input id="1c2" type="checkbox" name="contact[]" value="[email protected]"><img src="images/flags/eu.gif" align="absmiddle" border="0" style="margin-right:5px;margin-left:5px;">http://www.xfire.com<a href="fiche.php?id=11"><img src="images/fiche.gif" align="absmiddle" border="0" style="margin-left:5px;"></a></li> <script type="text/javascript">is_checked(1, 1c2);</script> </ul> </li>

par Invité » 02 juin 2006, 18:06

Alors :

bonne nouvelle, les fonctions arrivent à "cohabiter" ensemble.

Par contre, lorsque ma page se charge, les checkbox-filles de la checkbox-mère cochée ne sont toujours pas cochées.

La source générée (les checkbox sont créées à la volée en php) :

Code : Tout sélectionner

<li><img src="images/plus.gif" onclick="expand(this)" align="absmiddle" /><input id="1" type="checkbox" onclick="ta(this.id)" name="cat_destinataire[]" value="1" checked>E-sports <ul> <li><input id="1c1" type="checkbox" name="contact[]" value="[email protected]"><img src="images/flags/fr.gif" align="absmiddle" border="0" style="margin-right:5px;margin-left:5px;">http://www.esportsfrance.com<a href="fiche.php?id=1"><img src="images/fiche.gif" align="absmiddle" border="0" style="margin-left:5px;"></a></li> <script type="text/javascript">is_checked(1, 1c2);</script> <li><input id="1c2" type="checkbox" name="contact[]" value="[email protected]"><img src="images/flags/eu.gif" align="absmiddle" border="0" style="margin-right:5px;margin-left:5px;">http://www.xfire.com<a href="fiche.php?id=11"><img src="images/fiche.gif" align="absmiddle" border="0" style="margin-left:5px;"></a></li> <script type="text/javascript">is_checked(1, 1c3);</script> </ul> </li>

par Ryle » 02 juin 2006, 17:22

Il n'y a à priori rien d'incompatible entre les deux scripts, cela dit je viens de réaliser que tu insères du code javascript en plein milieu de tes input et ça c'est pas bien : le navigateur doit pas s'y retrouver pour savoir quel ">" ferme quoi.. :)

Essaye peut être quelque chose comme ceci ?

Code : Tout sélectionner

function is_checked(cat, idDeLaCase) { // la case prend la valeur de la categorie document.getElementById(idDeLaCase).checked = document.getElementById(cat).checked; } ... <input id="1c1" type="checkbox" name="contact[]" value="[email protected]"> <script type="text/javascript">is_checked(1, "1c1");</script> ... <input id="1c2" type="checkbox" name="contact[]" value="[email protected]"> <script type="text/javascript">is_checked(1, "1c2");</script>

par Invité » 02 juin 2006, 16:52

J'ai fait les changements, mais cette fonction me cause toujours la même erreur, à savoir qu'elle fait planter une autre de mes fonctions JS, qui a pour but de pouvoir fermer/ouvrir une série de checkbox :

Code : Tout sélectionner

function expand(n) { var node = n; while ( node.nodeName != "UL" ) node = node.nextSibling; if ( node.style.display == 'block' ) { node.style.display = 'none'; n.src = 'images/plus.gif'; } else { node.style.display = 'block'; n.src = 'images/minus.gif'; } }
Quand je n'ai pas la fonction is_checked() dans mon code, la fonction expand() marche très bien, mais lorsque qu'il y'a la fonction, la fonction expand() ne marche plus, rien ne se passe lorsque je clique sur ma petite image + : /

par Ryle » 02 juin 2006, 16:34

Essaye ceci à la place de ton "write", ca devrait déjà mieux fonctionner :

Code : Tout sélectionner

document.write('checked');
Cela dit, ca ne coche les cases qu'à l'ouverture de la page si la case avec l'id correspondant est cochée :)

nota : tu peux aussi simplifier le test du if, si la case est cochée, la fonctionne retourne vrai, donc pas besoin de la comparer en plus à true :

Code : Tout sélectionner

if(document.getElementById(cat).checked)

erreur dans mon script ?

par Invité » 02 juin 2006, 15:26

Bonjour,
j'aimerais savoir si quelque chose cloche dans cette fonction :

Code : Tout sélectionner

function is_checked(cat) { if(document.getElementById(cat).checked == true) { write 'checked'; } }
Normalement elle devrait, lorsque des checkbox-mères ont été cochées, cocher toutes les checkbox filles de cette checkbox filles.

Code : Tout sélectionner

<li><img src="images/plus.gif" onclick="expand(this)" align="absmiddle" /><input id="1" type="checkbox" onclick="ta(this.id)" name="cat_destinataire[]" value="1" >E-sports <ul> <li><input id="1c1" type="checkbox" name="contact[]" value="[email protected]" <script type="text/javascript">is_checked(1);</script>><img src="images/flags/fr.gif" align="absmiddle" border="0" style="margin-right:5px;margin-left:5px;">http://www.esportsfrance.com<a href="fiche.php?id=1"><img src="images/fiche.gif" align="absmiddle" border="0" style="margin-left:5px;"></a></li> <li><input id="1c2" type="checkbox" name="contact[]" value="[email protected]" <script type="text/javascript">is_checked(1);</script>><img src="images/flags/eu.gif" align="absmiddle" border="0" style="margin-right:5px;margin-left:5px;">http://www.xfire.com<a href="fiche.php?id=11"><img src="images/fiche.gif" align="absmiddle" border="0" style="margin-left:5px;"></a></li> </ul> </li>