Ich habe ein scheinbar dummes Problem, aber da ich nicht sehr JavaScript kann, brauche ich etwas Hilfe.Iteration (für) seltsam in JS arbeiten
Ich versuche nur, durch ein Array zu iterieren, aber es scheint Elemente ohne Grund überspringt. Meine Funktion ist wirklich einfach:
function uncolour(classname)
{
var anchors = document.getElementsByClassName(classname);
for(var i = 0; i < anchors.length; i++) {
var anchor = anchors[i];
anchor.classList.toggle("nocolor");
}
}
Das Problem ist, dass es konsequent ein Element überspringt. Es funktioniert für das erste Element, dann für das dritte und so weiter. Ich habe überprüft und alle die richtigen Elemente sind in der Anker-Array vorhanden, aber es schaltet die Klasse nur auf die geraden Indizes. Irgendeine Idee warum? Ich bin hier ratlos.
BEARBEITEN: Vielen Dank für Ihre Antworten. Ich habe den anderen ähnlichen Beitrag gelesen, aber der Fall mit mir ist, dass das Umschalten der "nocolor" -Klasse die Elemente des Arrays nicht beeinflussen sollte, weil der Klassenname, nach dem ich suche, nicht mit "nocolor" identisch ist. Ich denke, dass die Elemente zwar gleich bleiben, aber irgendwie neu angehängt werden, weil ich die Klasse eines Elements im Dokument geändert habe. Also, ich weiß nicht, warum, aber das war für mich: for(var i = anchors.length-1; i>=0; i--)
Können Sie reproduzieren das Problem mit der Code-Snipped-Funktion von SO? –
Vermutlich seit ein Mann eine Live-Elementsammlung verändert. – Lain
Das ist eine Live-HTML-Sammlung, kehren Sie die Schleife um und beginnen Sie am Ende. 'für (var i = anchors.length-1; i> = 0; i--) {' oder 'while (anchors.length) {anchors [0] .classList.toggle (" nocolor "); } ' – epascarello