[javascript] getElementsByName() sous opera

j’utilise cette fonction pour changer la couleur de fonds d’un certain nombre de cellules de tableau (

) présentes un peu partout dans une page. ça fonctionne bien sous firefox, sous ie je peux pas trop dire parce que j’ai déjà d’autres problemes a regler dessus, mais sous opera ça ne fonctionne pas: apparemment cette fonction ne tient compte que des éléments de formulaire, et pas des autres éléments de la page (, , etc).

y a-t-il une solution pour que ça fonctionne à laquelle je n’ai pas pensé, ou suis-je obligé de faire avec du xpath genre “tr[@name=‘xxx’]”?

[quote=“Rabban, post:1, topic: 34809”]j’utilise cette fonction pour changer la couleur de fonds d’un certain nombre de cellules de tableau (

) présentes un peu partout dans une page. ça fonctionne bien sous firefox, sous ie je peux pas trop dire parce que j’ai déjà d’autres problemes a regler dessus, mais sous opera ça ne fonctionne pas: apparemment cette fonction ne tient compte que des éléments de formulaire, et pas des autres éléments de la page (, , etc).

y a-t-il une solution pour que ça fonctionne à laquelle je n’ai pas pensé, ou suis-je obligé de faire avec du xpath genre “tr[@name=‘xxx’]”?[/quote]

Hello, a tout zazard est ce que getElementById(id) fonctionne ?

oui, mais cette fonction ne retournant qu’un seul élément, elle ne convient à mon besoin.

edit:après une étude un peu plus approfondie sur l’attribut name, effectivement il n’est pas censé s’appliquer à ce genre d’éléments et par conséquent il est logique que cette méthode ne fonctionne pas. là je me dis très bien, je vais essayer de faire les choses dans les règles, pour une fois, et me voila parti à aller vers une solution dom et xpath pour atteindre les noeuds qui m’intéressent.
sauf que, si je veux vraiment faire les choses bien, j’ai pas le droit de mettre un attribut name à ma cellule. donc je dois forcément utiliser un autre attribut pour retrouver mes cellules. en l’occurence, les deux seuls choix techniquement utilisables seraient les attributs class et title, que je me refuse à utiliser pour ça parce que c’est franchement pas leur boulot.
bref, la seule solution qui reste c’est de mettre un input hidden dans chacune de ces cellules et d’utiliser parentNode pour remonter à la cellule. c’est crade, mais au moins c’est juste.

tout ça pour dire que je viens de me souvenir pourquoi, déjà il y a 5 ans, je pensais que le xhtml c’était tout pourri. c’était pas par esprit de contradiction de post-adolescent rebelle, c’était parce que c’est vrai.

sur ce, je vais aller essayer de me calmer un coup, avant de retenter de trouver une solution qui soit à la fois propre et valide.

Ce serait pas mieux en utlisant GetElementsByClass ^^ (la méthode n’existe pas de base, mais y a moyen de récupérer tous les élément d’une même class).

probleme: j’ai d’autres éléments de la même classe dont je ne veux pas.

On peut appliquer plusieurs classes à un élément (encore heureux B)). Suffit de séparer les noms par des espaces, genre :

Je te conseille de jeter un oeil à jQuery, ça te permettra de faire du code très rapidement, simplement, de manière plus lisible et surtout, ça fonctionnera sous tous les navigateurs.

rhaa, en plus je le savais… mais c’est typiquement le genre de trucs que j’utilise trop peu souvent pour m’en souvenir quand j’en ai besoin.