piwaille Posté 26 Septembre 2006 Posté 26 Septembre 2006 (modifié) '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" Modifié 26 Septembre 2006 par piwaille
badangel Posté 26 Février 2007 Posté 26 Février 2007 (modifié) 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é 26 Février 2007 par badangel
skatlan Posté 27 Février 2007 Posté 27 Février 2007 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.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant