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 !!!

Code : Tout sélectionner

document.getElementsByTagName('tr').length
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.