Bei der Methode forEach() treten trotz ihrer weit verbreiteten Unterstützung einige Probleme auf, wenn sie mit querySelectorAll in neueren Internetversionen verwendet wird Explorer (11) und Edge.
NodeList und HTMLCollection, bei denen es sich um Sammlungen handelt, die übereinstimmende DOM-Elemente darstellen, fehlt in älteren Microsoft-Browsern nativ die Methode forEach(). Diese Sammlungen sind jedoch iterierbar und ermöglichen ein Durchlaufen mit alternativen Methoden wie for-of.
Polyfilling forEach()
Sie können die forEach()-Methode manuell zu NodeList und HTMLCollection in Browsern hinzufügen, die sie nicht nativ unterstützen. Dies ist eine einfache und effektive Lösung:
<code class="javascript">if (typeof NodeList !== "undefined" && NodeList.prototype && !NodeList.prototype.forEach) { NodeList.prototype.forEach = Array.prototype.forEach; }</code>
Polyfilling-Iterabilität
Wenn ein Browser über ES2015-Funktionen verfügt, aber immer noch über keine NodeList-Iterabilität verfügt, können Sie auch diese polyfillen:
<code class="javascript">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>
Durch Polyfilling forEach() und Iterabilität können Sie die Einschränkungen älterer Microsoft-Browser überwinden und ein konsistentes Verhalten Ihres Codes sicherstellen, wenn Sie mit NodeList- und HTMLCollection-Sammlungen arbeiten.
Das obige ist der detaillierte Inhalt vonWarum funktioniert forEach() bei querySelectorAll in neueren Microsoft-Browsern nicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!