Page 1 sur 1
erreur dans mon script ?
Posté : 02 juin 2006, 15:26
par Invité
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>
Posté : 02 juin 2006, 16:34
par Ryle
Essaye ceci à la place de ton "write", ca devrait déjà mieux fonctionner :
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 :
Posté : 02 juin 2006, 16:52
par Invité
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 + : /
Posté : 02 juin 2006, 17:22
par Ryle
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>
Posté : 02 juin 2006, 18:06
par Invité
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>
Posté : 02 juin 2006, 18:07
par Invité
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>
Posté : 02 juin 2006, 21:09
par Ryle
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");
Posté : 05 juin 2006, 11:28
par Invité
ça ne marche toujours pas : /
Posté : 05 juin 2006, 11:28
par Invité
pourquoi faut-il des guillemets d'ailleurs ?
Posté : 05 juin 2006, 15:08
par Ryle
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>