[DOM] DOM et gestion des boutons radio
Salut,
J'aimerais avoir votre avis sur la gestion des boutons radio avec le DOM, dans une optique XHTML.
Comment connaitre la valeur active d'un groupe de bouton radio et comment la modifier via le code ?
Sachant que
1) "getElementsByName" est dépréciée,
2) que "document.MyForm.MyRadio.value" n'est (me semble-t-il) pas vraiment "DOM-Like" (:mouarf3: le jeu de mots à 30 centimes d'euros [Ndlr à l'attention des "vieux" : à 2 balles])
3) et que coller un ID à chaque bouton radio n'est pas la panacée car c'est plutot difficile sur une liste de boutons générée via php :
- Créer des id avec un numéro d'ordre ("MyRadio-1", "MyRadio-2" par exemple) n'aidera pas beaucoup, ni dans la recherche, ni dans l'affectation
- inclure la valeur (value) dans l'ID ("MyRadio-toto", "MyRadio-tata" par exemple) ne marchera que si la valeur ne contient pas d'espace ou de hiéroglyphes
- Ca me parait vraiment lourd de passer par des ID
Bref, j'ai écrit ces 2 fonctions qui me semblent franchement "moyennes" comme solution (même si elles fonctionnent bien) et j'aimerais savoir si vous avez une meilleure méthode (sachant que je suis loin d'être un pro du DOM):?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| // Cette fonction indique la valeur du bouton radio coché dans le groupe demandé
function WhichRadio(RadioName)
{
// Recherche des objets de type "input"
var Inputs = document.getElementsByTagName('input');
for(i = 0; i < Inputs.length; i++)
{
// filtre sur les radios
if(Inputs[i].type == "radio")
{
// Filtre sur le bouton radio recherché et vérification de son état
if(Inputs[i].name == RadioName && Inputs[i].checked)
return Inputs[i].value;
}
}
return "none";
}
// Cette fonction coche le bouton radio ayant la valeur demandé
function SetRadio(RadioName, Valeur)
{
// Recherche des objets de type "input"
var Inputs = document.getElementsByTagName('input');
for(i = 0; i < Inputs.length; i++)
{
// filtre sur les radios
if(Inputs[i].type == "radio")
{
// Filtre sur le bouton radio recherché et sa valeur
if(Inputs[i].name == RadioName && Inputs[i].value == Valeur)
Inputs[i].checked = "checked";
}
}
} |
Merci