Page 1 sur 1
Parcourir tous les éléments d'une page
Publié : 17 nov. 2005, 15:05
par Soundy
Bonjour,
après plusieurs recherches sur l'utilisation du document.all dans FF, je ne trouve pas comment ecrire en respectant le DOM :
Code : Tout sélectionner
for (elements in document.all) {
// Reinit des couleurs de fond par trBgColor
if (elements.substring(0,2) == "tr" ) {
document.getElementById(elements).style.background=trBgColor;
}
}
J'ai trouvé ça mais, je ne vois pas comment l'utiliser ...
Code : Tout sélectionner
if(document.all && !document.getElementById) {
document.getElementById = function(id) {
return document.all[id];
}
}
L'idée serait de changer un style s'il est un <TR id="tr???">
D'avance, Merci, à ceux qui pourront m'aider.
Soundy
Publié : 17 nov. 2005, 15:28
par Invité
Essaye la méthode : document.getElementsByTagName("tr") mais ça ne marche que dans mozilla, je pense
Publié : 17 nov. 2005, 16:51
par Asumbaa
Bonjour,
document.all n'est pas standard...
Un peu de doc sur le DOM :
http://gilles.chagnon.free.fr/cours/dhtml/toc.html
Publié : 17 nov. 2005, 16:57
par SB
Le code suivant devrait marcher aussi bien dans Fx que IE
Code : Tout sélectionner
for (i=0; i<document.getElementsByTagName('tr').length; i++) {
var id=document.getElementsByTagName('tr')[i].getAttribute("id");
if (id == 'tr???') {
document.getElementsByTagName('tr')[i].setAttribute("bgColor", trBgColor);
}
}
Publié : 18 nov. 2005, 10:41
par Soundy
Merci à vous tous je cours m'informer et recoder proprement.
@+ Soundy.
Publié : 20 nov. 2005, 12:28
par Benoit
SB a écrit :Le code suivant devrait marcher aussi bien dans Fx que IE
Code : Tout sélectionner
for (i=0; i<document.getElementsByTagName('tr').length; i++) {
var id=document.getElementsByTagName('tr')[i].getAttribute("id");
if (id == 'tr???') {
document.getElementsByTagName('tr')[i].setAttribute("bgColor", trBgColor);
}
}
Oula, oui ça va marcher mais tu rappelles chaque fois getElementsByTagName() sur ton document c'est très peu efficace ! En règle générale si tu vas réutiliser plusieurs fois un appel de fonction il vaut mieux en faire une variable, et inversement déclarer une variable pour faire un seul if dessus ne sert pas à grand chose. Essaie plutôt :
Code : Tout sélectionner
var lignes = document.getElementsByTagName('tr');
var nblignes = lignes.length;
for (i = 0; i < nblignes; i++) {
if (lignes[i].getAttribute("id") == 'tr???') {
lignes[i].setAttribute("bgColor", trBgColor);
}
}
Publié : 20 nov. 2005, 14:01
par Invité
GENIAL !!!
Voilà la réponse.
Merci beaucoup à vous tous.
Soundy
Publié : 21 nov. 2005, 11:48
par bobo
Il me semble qu'il est plus efficace de d'utiliser getElementById pour trouver l'élément avec le bon id, et de vérifier que c'est un élément <tr>, plutôt que de parcourir tout les <tr> et de vérifier qu'il a le bon id.
Hum, je crois que j'ai mal compris la question, en fait tu veux les lignes dont l'id commence par 'tr' plutôt ?
Je ne sais pas trop qu'elle est la finalité de ton Javascript, mais il est peut-être plus judicieux d'utiliser une classe et les CSS pour colorer ces quelques lignes.