Changement de classe d'élément
Bonjour,
J'ai constaté un fonctionnement qui me surprend et dont je ne comprends pas pourquoi il se produit.
Code:
1 2 3 4 5 6
|
var liste_nomenclature_button = document.getElementsByClassName('arrow_bottom');
for(i=0; i < liste_nomenclature_button.length; i++) {
liste_nomenclature_button[i].classList.add('arrow_left');
liste_nomenclature_button[i].classList.remove('arrow_bottom');
} |
Avec le code ci-dessus, par exemple, si liste_nomenclature_button contient 6 éléments
On fait d'abord add sur liste_nomenclature_button[0]
liste_nomenclature_button ne contient alors plus que 5 éléments !?!?!?!?
Ces éléments sont renumérotés de 0 à 4 dans liste_nomenclature_button
le remove se fait alors sur liste_nomenclature_button[0], qui était en fait le liste_nomenclature_button[1] d'avant
Il y a donc un décalage.
Une explication ?
En faisant deux boucles successives, les opérations se font correctement.
Code:
1 2 3 4 5 6 7
|
for(i=0; i < liste_nomenclature_button.length; i++) {
liste_nomenclature_button[i].classList.add('arrow_left');
}
for(i=0; i < liste_nomenclature_button.length; i++) {
liste_nomenclature_button[i].classList.remove('arrow_bottom');
} |