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

Eléphanteau du PHP | 36 Messages

04 juin 2007, 14:19

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 )

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

04 juin 2007, 17:08

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');
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 36 Messages

04 juin 2007, 18:01

merci je vais tester ca de suite

Eléphanteau du PHP | 36 Messages

04 juin 2007, 18:21

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 )

Mammouth du PHP | 1885 Messages

05 juin 2007, 02:35

Utilise <balise id="identifiant"> et getElementById().
Cela garantira que ton élément est unique. (un id ne pouvant être utilisé plus d'une fois)
La programmation est l'expression de la poésie d'un programmeur
Génération PHP