Aller au contenu

getElementsByName sous IE


piwaille

Sujets conseillés

'Jour tous !

voilà... j'ai bien compris que c'est pas beau, que les prochaines normes qui veulent nous pourrir la vie créer un monde parfait à l'insue de not' plein grés vont abolir la fonction getElementsByName

alors je cherches une astuce pour remplacer cette fonction

oui ... je sais, il faudra passer par getElementById, ne plus utiliser les name mais les Id...

bon le contexte : un tableau (construit en php)

je veux cacher des lignes de ce tableau.

Avant, je les nommais ligneA, ligneB ....

et quand je voulais cacher une colonne je faisais

ligne = document.getElementsByName("ligneA");
for($i=0; $i<ligne.length; $i++)
{
ligne[$i].style.display=eteind;
}

je cherches si vous avez une soluce élègante pour remplacer ce code (qui continuer à très bien marcher hors µ$ ) sans avoir à coder des nombre de ligne en "dur" :evil:

Modifié par piwaille
Lien vers le commentaire
Partager sur d’autres sites

  • 4 months later...

Voilà une solution au problème

(provient de : http://www.dreamincode.net/code/snippet293.htm)

En gros vous remplacez les appels: document.getElementsByName(name) par getElementsByName_iefix(tag, name) où tag représente le type de balise que vous avez nommé. Pour ma part j'ai besoin de ce script pour afficher un tableau sous forme d'arbre, et avant cela ne fonctionnait pas avec IE. Le calcul peut s'avérer lent si il y a beaucoup de choses à trouver (plus lent qu'avec getElementsByName(name)).

Dans mon cas j'ai des lignes de ce genre:

<TR NAME="ligne1">

auquelles j'accède par:

getElementsByName_iefix('TR','document.ligne1')

function getElementsByName_iefix(tag, name) {

var elem = document.getElementsByTagName(tag);
var arr = new Array();
for(i = 0,iarr = 0; i < elem.length; i++) {
att = elem[i].getAttribute("name");
if(att == name) {
arr[iarr] = elem[i];
iarr++;
}
}
return arr;
}

Enfin, encore une journée de perdue à cause de Micros$oft et en particulier de IE ...

Modifié par badangel
Lien vers le commentaire
Partager sur d’autres sites

Euh, bonjour !

Je suis complétement nouveau, donc prenez ça comme vous voulez, mais j'ai trouvé un petit truc qui marche pas mal pour les histoire de name et d'id.

Perso j'avais besoin de mettre en couleur des colonnes de tableau avec un onMouseOver, et voilà ce que j'ai fait :

Une colonne au hasard :

<td id="colX" name="colX" onMouseOver="changeColour1('colX');colX.bgColor='#FFFFFF';">

La fonction :

function changeColour1(name) {
var tTab=document.getElementsByName(name)
for (var i_tem = 0; i_tem < tTab.length; i_tem++)
tTab[i_tem].style.backgroundColor='white';
}

omment ça marche ? Bah pour une même colonne, les id et les name sont les même.

Firefox reconnaitra la fonction "changecolour1", alors qu'IE reconnaitra le "colX.bgColor" qui fonctionnera sur tous les id de la colonne.

Barbare ? Totalement ! Une duplication affreuse des id, l'utilisation de deux fonctions de le onMouseOver , tout cela est terrible, mais tout cela fonctionne parfaitement, et très rapidement : mon tableau fait 45*45, et ces codes me permettent de créér une "croix" en temps réel illuminant toute la ligne et la colonne sur lesquelles se trouve le curseur de la souris, en temps réel quasiment, sans lag, sans gros code, sans lourdeur. ^^

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...