Page 1 sur 1

Acceder a un element d'une page HTML par son nom

Posté : 04 juin 2007, 14:19
par cortex007
Bonjour, sur une page html que j'ai faite j'ai un probleme pour acceder a des elements par leur nom. Je m'explique j'ai le code suivant :

Code : Tout sélectionner

... <div name='conteneur' onMouseOut="modification(this);"onMouseOver="remise(this);> <div name='target'> <img name='imageconteneur' src='...'> </div> </div> ...
je voudrais avec la fonction modification alterer la taille et le style de la balise 'conteneur' et aussi changer la source de l'image 'imageconteneur'
Pour le changement des proprietes CSS j'ai fait :

Code : Tout sélectionner

objet.style.height='...'; objet.style.backgroundColor='#....'; objet.style.color='...';

ou objet est le parametre de la fonction (ne marche pas avec firefox donc deja il y a des erreurs)

Mais j'arrive pas a acceder a l'objet 'imageconteneur' , j'ai essaye d'utiliser la fonction getElementsByName de la maniere suivante mais cela ne fonctionne pas.

Code : Tout sélectionner

alert(document.getElementsByName('image'+objet.name)[0].name);
pouvez vous m'indiquer mon erreur ? (le tableau doit normalement avoir 1 element )

Posté : 04 juin 2007, 17:08
par zeus
Il se trouve que getElementsByName() est un alias à la fonction getElementsByTagName() qui récupère les balises dont le nom correspond, pas l'attribut name.

cela signifie que pour récupérer la balise suivante :

Code : Tout sélectionner

<a name="monLien">toto</a>
il faut écrire

Code : Tout sélectionner

document.getElementsByName('div');
et non pas

Code : Tout sélectionner

document.getElementsByName('monLien');

Posté : 04 juin 2007, 18:01
par cortex007
merci je vais tester ca de suite

Posté : 04 juin 2007, 18:21
par cortex007
Il se trouve que getElementsByName() est un alias à la fonction getElementsByTagName() qui récupère les balises dont le nom correspond, pas l'attribut name
c'est a moitie vrais et a moitie faux, getElementsByName() met dans un tableau tout les elements de balises html qui ont pour nom name mais pour IE il y a un bug qui fait qu'il met dans un tableau tout les elements de balise HTML qui on pour id name ;) (cruelle subtilite )

Posté : 05 juin 2007, 02:35
par Xenon_54
Utilise <balise id="identifiant"> et getElementById().
Cela garantira que ton élément est unique. (un id ne pouvant être utilisé plus d'une fois)