Microsoft ブラウザの DOM コレクションに対して「オブジェクトはプロパティまたはメソッド「forEach」をサポートしていません」がスローされるのはなぜですか?

Susan Sarandon
リリース: 2024-10-20 06:43:29
オリジナル
199 人が閲覧しました

Why is

DOM コレクション用の Microsoft ブラウザーの forEach() に関する問題

開発者として、私たちはしばしば forEach() メソッドを使用してトラバースし、 DOM コレクションを操作します。ただし、Internet Explorer 11 および Edge では、「オブジェクトはプロパティまたはメソッド 'forEach' をサポートしていません」というイライラするエラーが発生することがあります。

DOM コレクションについて

Toこの問題を解決するには、querySelectorAll のような DOM メソッドがコレクション、つまり NodeList または HTMLCollection を返しますが、これらは本質的に forEach() をサポートしていないことを理解する必要があります。

  • NodeList: のスナップショットを表します。
  • HTMLCollection: NodeList に似ていますが、ライブであり、DOM 内の変更を反映します。

Polyfilling forEach ()

NodeList は forEach() を持つように指定されているため、安全にポリフィルできます。

<code class="js">if (typeof NodeList !== "undefined" &amp;&amp; NodeList.prototype &amp;&amp; !NodeList.prototype.forEach) {
    NodeList.prototype.forEach = Array.prototype.forEach;
}</code>
ログイン後にコピー

反復性の確保

NodeList と HTMLCollection は反復可能ですが、古いブラウザではこれが実装されていない可能性があります。ポリフィルの反復性も同様に実現できます。

<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>
ログイン後にコピー

これらのポリフィルを配置すると、IE11 や Edge でも NodeList や HTMLCollection で forEach() を正常に使用できます。

使用例

<code class="js">var color_btns = document.querySelectorAll('#color > p');
color_btns.forEach(function(color) {
    // Our custom logic here...
});</code>
ログイン後にコピー

追加の考慮事項

一部の従来の DOM ライブラリは、forEach() を HTMLCollection に追加することによって混乱する可能性があります。このような場合は、NodeList.

の forEach() のみをポリフィルします。

以上がMicrosoft ブラウザの DOM コレクションに対して「オブジェクトはプロパティまたはメソッド「forEach」をサポートしていません」がスローされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!