Parcourir tous les éléments d'une page

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
Soundy
Arias
Messages : 4
Inscription : 20 sept. 2005, 16:54

Parcourir tous les éléments d'une page

Message 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
Invité

Message par Invité »

Essaye la méthode : document.getElementsByTagName("tr") mais ça ne marche que dans mozilla, je pense
Asumbaa
Tyrannosaurus Rex
Messages : 2411
Inscription : 08 déc. 2004, 20:07

Message 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
SB
Varan
Messages : 1095
Inscription : 05 mars 2004, 18:38

Message 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);
	}
}
Soundy
Arias
Messages : 4
Inscription : 20 sept. 2005, 16:54

Message par Soundy »

Merci à vous tous je cours m'informer et recoder proprement.

@+ Soundy.
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message 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);
	}
}
♫ Li tens s'en veit, je n'ai riens fais ;
Li tens revient, je ne fais riens. ♪
Invité

Message par Invité »

GENIAL !!!

Code : Tout sélectionner

document.getElementsByTagName('tr').length
Voilà la réponse.
Merci beaucoup à vous tous.

Soundy
bobo
Iguane
Messages : 764
Inscription : 18 août 2003, 11:04

Message 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.
Les standards c'est bon, mangez en !
Flore & Sébastien
Unité dans la diversité.
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 3 invités