Heim > Web-Frontend > js-Tutorial > Hauptteil

Wie behebe ich Array.forEach-Probleme mit HTMLCollections in Edge und Internet Explorer?

Mary-Kate Olsen
Freigeben: 2024-10-20 06:42:02
Original
775 Leute haben es durchsucht

How to Fix Array.forEach Issues with HTMLCollections in Edge and Internet Explorer?

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" &amp;&amp; NodeList.prototype &amp;&amp; !NodeList.prototype.forEach) {
    NodeList.prototype.forEach = Array.prototype.forEach;
}</code>
Nach dem Login kopieren

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" &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

Zusätzliche Hinweise:

  • for-of: Durch die Polyfilling-Iterabilität können Sie die for-of-Schleifensyntax direkt für Sammlungen verwenden.
  • Live-Sammlung: HTMLCollection ist eine Live-Sammlung, was bedeutet, dass Änderungen am DOM in der Sammlung widergespiegelt werden. NodeList ist nicht live.
  • Kompatibilität: Die bereitgestellten Polyfills zielen auf Browser ohne native forEach-Unterstützung ab, z. B. IE11.

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!

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!