Array.forEach Problem mit HTMLCollections in Edge und Internet Explorer
Einführung:
DOM Sammlungseigenschaften und -methoden wie querySelectorAll geben Sammlungen zurück, insbesondere NodeLists (für querySelectorAll) oder HTMLCollections (für Methoden wie getElementsByTagName). Diese Sammlungen unterscheiden sich in ihrer Funktionalität von regulären Arrays.
Das Problem mit forEach:
NodeList und HTMLCollection unterstützen die forEach-Methode nicht nativ. Aus diesem Grund tritt in den Browsern Microsoft Edge und Internet Explorer die Fehlermeldung „Objekt unterstützt Eigenschaft oder Methode ‚forEach‘ nicht“ auf.
Lösungen:
1. Polyfill forEach für NodeList:
Damit forEach mit NodeList funktioniert, können Sie es wie folgt definieren:
<code class="js">if (typeof NodeList !== "undefined" && NodeList.prototype && !NodeList.prototype.forEach) { NodeList.prototype.forEach = Array.prototype.forEach; }</code>
2. Polyfill-Iterabilität für NodeList und HTMLCollection:
Da NodeList und HTMLCollection als iterierbar angegeben sind, können Sie diese polyfillen, indem Sie Folgendes verwenden:
<code class="js">if (typeof Symbol !== "undefined" && Symbol.iterator && typeof NodeList !== "undefined" && NodeList.prototype && !NodeList.prototype[Symbol.iterator]) { Object.defineProperty(NodeList.prototype, Symbol.iterator, { value: Array.prototype[Symbol.iterator], writable: true, configurable: true }); }</code>
Zusätzliche Hinweise:
Das obige ist der detaillierte Inhalt vonWie behebe ich Array.forEach-Probleme mit HTMLCollections in Edge und Internet Explorer?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!