Heim > Web-Frontend > js-Tutorial > Hauptteil

Warum wird „Objekt unterstützt Eigenschaft oder Methode „forEach' nicht' für DOM-Sammlungen in Microsoft-Browsern ausgelöst?

Susan Sarandon
Freigeben: 2024-10-20 06:43:29
Original
199 Leute haben es durchsucht

Why is

Probleme mit forEach() in Microsoft-Browsern für DOM-Sammlungen

Als Entwickler verlassen wir uns oft auf die Methode forEach(), um und zu durchlaufen Manipulieren Sie DOM-Sammlungen. Es kann jedoch sein, dass wir in Internet Explorer 11 und Edge auf den frustrierenden Fehler „Objekt unterstützt Eigenschaft oder Methode ‚forEach‘ nicht“ stoßen.

Grundlegendes zu DOM-Sammlungen

An Um dieses Problem zu lösen, müssen wir verstehen, dass DOM-Methoden wie querySelectorAll Sammlungen zurückgeben, nämlich NodeList oder HTMLCollection, die forEach() nicht von Natur aus unterstützen.

  • NodeList: Stellt eine Momentaufnahme von dar passende Elemente, spiegelt DOM-Änderungen nicht automatisch wider.
  • HTMLCollection: Ähnlich wie NodeList, aber live, spiegelt Änderungen im DOM wider.

Polyfilling forEach ()

Da NodeList mit forEach() spezifiziert ist, können wir es sicher polyfillen:

<code class="js">if (typeof NodeList !== "undefined" &amp;&amp; NodeList.prototype &amp;&amp; !NodeList.prototype.forEach) {
    NodeList.prototype.forEach = Array.prototype.forEach;
}</code>
Nach dem Login kopieren

Iterabilität sicherstellen

NodeList und HTMLCollection sind iterierbar, ältere Browser implementieren dies jedoch möglicherweise nicht. Wir können auch die Iterabilität polyfillen:

<code class="js">if (typeof Symbol !== "undefined" &amp;&amp; Symbol.iterator &amp;&amp; typeof NodeList !== "undefined" &amp;&amp; NodeList.prototype &amp;&amp; !NodeList.prototype[Symbol.iterator]) {
    Object.defineProperty(NodeList.prototype, Symbol.iterator, {
        value: Array.prototype[Symbol.iterator],
        writable: true,
        configurable: true
    });
}</code>
Nach dem Login kopieren

Mit diesen Polyfills können wir forEach() erfolgreich auf NodeList und HTMLCollection verwenden, sogar in IE11 und Edge.

Beispielverwendung

<code class="js">var color_btns = document.querySelectorAll('#color > p');
color_btns.forEach(function(color) {
    // Our custom logic here...
});</code>
Nach dem Login kopieren

Zusätzliche Überlegungen

Einige ältere DOM-Bibliotheken können durch das Hinzufügen von forEach() zu HTMLCollection verwirrt werden. In solchen Fällen nur Polyfill forEach() auf NodeList.

Das obige ist der detaillierte Inhalt vonWarum wird „Objekt unterstützt Eigenschaft oder Methode „forEach' nicht' für DOM-Sammlungen in Microsoft-Browsern ausgelöst?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!