Page 1 sur 1

Récupérer valeur d'une checkbox

Publié : 05 janv. 2005, 14:47
par calimo
Avec un select on fait ça :

Code : Tout sélectionner

	var cat  = document.getElementById('cat').options[document.getElementById('cat').selectedIndex].value;
Et avec une input checkbox ? J'ai essayé

Code : Tout sélectionner

	var LLOnly  = document.getElementById('cat').input[document.getElementById('LL')].value;
mais j'ai une erreur :
Erreur : document.getElementById("cat").input has no properties
Fichier Source : file:///C:/Documents%20and%20Settings/Xavier/Bureau/classement-FF-proprio.js
Ligne : 6
Quelle est la bonne syntaxe ?

Publié : 05 janv. 2005, 14:54
par Bobe
t'as déjà vu une checkbox dans une liste déroulante ? ;-)
Et puis il n'existe pas de collection prédéfinie nommée 'input'.

Je suppose que c'est pour ta page d'extensions, donc il n'y a pas de formulaire. Dans ce cas, tu récupères ton input comme tu récupèrerais n'importe quel nœud.

Publié : 05 janv. 2005, 15:15
par calimo
Il me semble bien l'avoir mise en dehors de la liste déroulante. En tous cas elle apparaît bien séparément 8)

J'ai essayé

Code : Tout sélectionner

	var LLOnly  = document.getElementById('LL').value;
mais ça me retourne toujours "on" que je coche ou que je décoche la case..

Finalement avec

Code : Tout sélectionner

	var LLOnly  = document.getElementById('LL').checked;
ça fonctionne :D
Est-ce que c'est bien juste ou c'est un pur coup de bol ?

Reste à mettre en place un cookie pour stocker tout ça, mais il n'y a rien d'urgent :wink:

Merci !

Publié : 05 janv. 2005, 15:34
par Bobe
calimo a écrit : J'ai essayé

Code : Tout sélectionner

	var LLOnly  = document.getElementById('LL').value;
mais ça me retourne toujours "on" que je coche ou que je décoche la case..

Finalement avec

Code : Tout sélectionner

	var LLOnly  = document.getElementById('LL').checked;
ça fonctionne :D
Est-ce que c'est bien juste ou c'est un pur coup de bol ?
À partir du moment où ton input a l'identifiant 'LL', c'est bon. Lui donner un identifiant était-il indispensable ? Tu peux peut être récupérer le nœud en te baladant dans l'arbre. Admettons que ton input suive immédiatement ton select dans la structure du document. Il te suffirait de faire var tonInput = tonSelect.nextSibling. Le but est d'éviter de coller des id un peu partout lorsqu'ils ne sont pas indispensables.

Publié : 05 janv. 2005, 15:42
par Benoit
Pourquoi ne pas utiliser getElementsByName http://www.mozilla.org/docs/dom/domref/ ... ref49.html ?
(attention ça retourne un tableau et pas un seul élément ;))

(le lien vers la spécification est faux par contre, c'est celui-ci le bon : http://www.w3.org/TR/2003/REC-DOM-Level ... D-71555259

P.S. Je pense que tu fais la confusion classique entre attribut et propriété.
Pourquoi value ne marche pas :
http://www.w3.org/TR/2003/REC-DOM-Level ... D-49531485
Changing this attribute changes the contents of the form control, but does not change the value of the HTML value attribute of the element.

Publié : 05 janv. 2005, 16:53
par martin
Et pour répondre au niveau pratique :

var LLOnly = document.getElementById('LL').checked;

LLonly contient true ou false, c'est un booléen.

Publié : 05 janv. 2005, 17:09
par calimo
Bobe a écrit :À partir du moment où ton input a l'identifiant 'LL', c'est bon. Lui donner un identifiant était-il indispensable ?
Pour le lier au for du label. Il me semble qu'il n'y a pas trop d'autres solutions non ?
Parce que ce n'est pas bon de mettre des id ? Quel est le problème ?
Bobe a écrit :Tu peux peut être récupérer le nœud en te baladant dans l'arbre. Admettons que ton input suive immédiatement ton select dans la structure du document. Il te suffirait de faire var tonInput = tonSelect.nextSibling. Le but est d'éviter de coller des id un peu partout lorsqu'ils ne sont pas indispensables.
Ah oui ça pourrait en effet :)
Benoit a écrit :Pourquoi ne pas utiliser getElementsByName http://www.mozilla.org/docs/dom/domref/ ... ref49.html ?
(attention ça retourne un tableau et pas un seul élément Clin d'oeil)
Parce qu'il n'y a pas de name ? :lol: Je peux en mettre un mais quel avantage par rapport au id ?
Benoit a écrit :(le lien vers la spécification est faux par contre, c'est celui-ci le bon : http://www.w3.org/TR/2003/REC-DOM-Level ... D-71555259
Je n'ai pas vu d'autres liens... :? De quel lien parlais-tu ?
Benoit a écrit :P.S. Je pense que tu fais la confusion classique entre attribut et propriété.
Pourquoi value ne marche pas :
http://www.w3.org/TR/2003/REC-DOM-Level ... D-49531485
C'est fort probable en effet. :wink: Et j'ai aussi trop voulu voir la similarité avec ce qu'on fait dans un select où on veut bien récupérer l'attribut value :oops:
Mais maintenant je cherche bien l'attribut checked, et ça tombe bien je fais justement un test booléen sur celui-ci 8)

Publié : 05 janv. 2005, 17:39
par Bobe
calimo a écrit : Pour le lier au for du label. Il me semble qu'il n'y a pas trop d'autres solutions non ?

Code : Tout sélectionner

<label>blabla& #160;: <input ....></label>
Ça marche très bien ça aussi.
Parce que ce n'est pas bon de mettre des id ? Quel est le problème ?
C'est juste une question de logique. On ne va pas mettre des id sur chaque élément présent dans la page. Il faut simplement en mettre là où c'est indispensable.

Publié : 05 janv. 2005, 20:04
par Benoit
calimo a écrit :
Benoit a écrit :Pourquoi ne pas utiliser getElementsByName http://www.mozilla.org/docs/dom/domref/ ... ref49.html ?
(attention ça retourne un tableau et pas un seul élément Clin d'oeil)
Parce qu'il n'y a pas de name ? :lol: Je peux en mettre un mais quel avantage par rapport au id ?
Strictement aucun si la checkbox n'est pas envoyée avec un formulaire, mais c'est ce que j'avais cru comprendre :)
Benoit a écrit :(le lien vers la spécification est faux par contre, c'est celui-ci le bon : http://www.w3.org/TR/2003/REC-DOM-Level ... D-71555259
Je n'ai pas vu d'autres liens... :? De quel lien parlais-tu ?
Celui dans la référence DOM, il pointe vers getElementByTagName qui n'est pas la même méthode, et pas dans le même DOM (Core au lieu de HTML)

Publié : 05 janv. 2005, 21:44
par calimo
Très bien, merci à tous ! :wink:

Publié : 21 août 2006, 08:32
par lpgc
bonjour, :D
j'ai lu cet article parceque j'avais sous Firefox le message d'erreur suivant
Erreur : document.getElementById("ckachat") has no properties
sur le code :

Code : Tout sélectionner

			if (document.getElementById("ckachat").checked)
Après une recherche sur Google.... cette question est souvent posée : çà fonctionne sous IE et pas sous Firefox
Cherchez l'Erreur de mon code :shock:

Code : Tout sélectionner

    stable = stable & "<input type='checkbox' name='ckAchat' id='ckAchat' onclick='setMy(this);'"
    if wdvdAchete then
    	stable = stable & " checked"
    end if
    stable = stable & " value='ON'>"
:?: Trouvé ....
:idea: Dans l' ID.... j'ai pas fait attention aux majuscules :
ckachat c'est pas ckAchat... IE fait pas la différence

J'espère que çà pourra aider... j'ai dû chercher trop longtemps :evil:
Cordialement :D
Christian



Message envoyé avec : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)