getElementsByClassName n'en renvoie qu'un sur 2 ?!

Nouveau WRInaute
Voici le code qui bug:
Code:
	var vide = document.getElementsByClassName('autour2');
Il ne me retourne qu'un élément sur 2 qui possède la classe "autour 2".
Est ce que vous savez pourquoi ?
Pour vider le tableau renvoyer par cette fonction j'utilise:
Code:
var vide = document.getElementsByClassName('autour2');
	for(var i=0; i<vide.length; i++)
	{
	vide[i].className = ''; //il retire donc la class "autour2"
	}

Je vous met le lien vers un cas épuré de l'erreur.:
http://legarspol.free.fr/testdeplacement.html
La cellule avec "autour2" devient vert clair.
Quand on clique sur un lien les cases alentour ce colorent de vert clair mais d'abord ca décolore toutes les cases.
Normalement: cliquer sur un des liens puis sur un autre:
une case sur 2 ce décolore...
 
WRInaute accro
GetElementsByClassName renvoie une "live nodelist", i.e. elle se met à jour quand tu modifies des objets. Dans ton cas, au fur et à mesure que tu changes la classe des éléments en question, ils disparaissent de la liste, alors que toi tu sautes à l'index suivant.

Exemple: au départ il renvoie une liste de trois éléments A, B et C. Tu commences avec i=0, tu vires la classe de A. La liste ne contient maintenant plus que B et C, mais au tour suivant tu utilises i=1, donc C, et tu as sauté B. Ensuite tu veux passer à i=2, mais la longueur de la liste n'est plus que de 1 (elle ne contient que B), donc tu sors de ta boucle.

Une solution consiste à faire un while (vide.length>0) {vide.className='';}

NB: d'un coup de débugger (par exemple avec Opera Dragonfly, mais je suppose qu'on peut faire pareil avec Firebug) c'est assez évident.

Jacques.
 
Nouveau WRInaute
[Resolu]: getElementsByClassName n'en renvoie qu'un sur 2 ?!

Super, Merci Beaucoup pour ce conseil. Je vais tenter.
D'autre part j'ai firebug mais je ne l'ai jamais tester avec du javascript...
Je vais tenter!

EDIT:
J'ai remplacer par:
Code:
while(vide.length>0)
	{
	vide[0].className = '';
	}
Et ca marche.
Cependant j'ai pas su me servir de firebug
Et pour finir j'ai pas su mettre le sujet sur [Resolu}] ^^
Merci encore !
 
Discussions similaires
Haut