Also lassen Sie uns sagen, dass ich ein Array von DOM-Elemente haben:Javascript html dom Array-Elemente in Schleife
var z = document.getElementsByClassName('name');
und für jedes Element möchte ich mit Attribut für in-Schleife:
for(var n in z){z[n].setAttribute('marked', '1');}
Für obigen Code bekomme ich z[n].setAttibute is not a function
. Wenn ich jedoch Konsolenelemente des z-Arrays manuell einchecke, wurde das Attribut marked
jedem Element hinzugefügt. Warum passiert das und wie kann ich einen solchen Fehler verhindern?
n ist das Element, kein Index, tun n.setAttribute. Sie sollten einen traditionellen Zähler für eine Nodeliste verwenden. – Li357
Eine Nodelist ist Array-ähnlich, eine reguläre For-Schleife ist wahrscheinlich geeigneter. – adeneo
Siehe [Warum ist die Verwendung von "for ... in" mit Array-Iteration eine schlechte Idee?] (Http://stackoverflow.com/q/500504/1529630) – Oriol