「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > DOM 操作における HTMLCollection、NodeList、およびオブジェクト配列の違いは何ですか?

DOM 操作における HTMLCollection、NodeList、およびオブジェクト配列の違いは何ですか?

2024 年 11 月 10 日に公開
ブラウズ:843

How do HTMLCollections, NodeLists, and Object Arrays Differ in DOM Manipulation?

DOM 内の HTMLCollection、NodeList、および Object Array の区別

DOM ノードにアクセスするとき、開発者は HTMLCollection、NodeList、およびオブジェクト配列に遭遇することがよくあります。これらのデータ構造の違いを理解することは、ドキュメント構造を効果的に操作するために重要です。

HTMLCollections と NodeLists

HTMLCollections と NodeLists はノード コレクションとしての類似点を共有していますが、個別の特性:

  • コンテンツ: HTMLCollection には要素ノードのみが含まれますが、NodeList には任意のタイプのノードを保持できます。
  • メソッド:すべてのコレクションに共通のメソッドに加えて、HTMLCollections は名前で要素にアクセスするためのnamedItem メソッドを提供します。

ライブ コレクションとスナップショット コレクション

DOM コレクションは次のいずれかになります。ライブまたはスナップショット:

  • ライブ: DOM に変更が加えられると、コレクションは自動的に更新されます。
  • スナップショット: コレクションは固定されたままです。 DOM の変更に関係なく。

ブラウザ メソッド (getElementsByTagName など) によって返される DOM コレクションは通常ライブですが、jQuery の選択内容はスナップショットです。

配列とオブジェクト配列

jQuery オブジェクトはコンソール ログでは配列として表示されますが、実際にはオブジェクト配列:

  • 配列: 数値インデックスを使用してアクセスされる連続コレクションです。
  • オブジェクト配列: 数値プロパティと名前付きプロパティの両方を使用して要素にアクセスする配列。

ノードの選択

ドキュメント メソッドの使用:

  • document.getElementsByTagName("td"): すべての td 要素の HTMLCollection を返します。
  • document.getElementsByClassName("myRow"): 戻り値"myRow" クラスのすべての要素の NodeList。

jQuery の使用:

  • $("td"): すべての td 要素を選択しますそして、jQuery オブジェクト、オブジェクト配列を返します。

サンプル スクリプト

提供されたスクリプトは、データ構造間の違いを示しています:

  • console.log('[123,"abc",321,"cba"]=[123,"abc",321,"cba"]: 配列を比較します。
  • console.log('{ 123:123,abc:"abc",321:321,cba:"cba"}={123:123,abc:"abc",321:321,cba:"cba"}: オブジェクト配列とオブジェクト構文を比較します。
  • console.log('Node=',Node): ノード タイプを表すオブジェクト配列であるグローバル Node オブジェクトをログに記録します。
  • console.log('document.links=', document.links): リンクの HTMLCollection をログに記録します。
  • console.log('document.getElementById("myTable")=',document.getElementById("myTable")): 単一の要素ではなく、単一の要素をログに記録します。 collection.
  • console.log('document.getElementsByClassName("myRow")=',document.getElementsByClassName("myRow")): "myRow" クラスを持つ要素の NodeList をログに記録します。
  • console.log('document.getElementsByTagName("td")=',document.getElementsByTagName("td")): すべての td 要素の HTMLCollection をログに記録します。
  • console.log('$(" #myTable")=',$("#myTable")): #myTable 要素を表す jQuery オブジェクトをログに記録します。
  • console.log('$("td")=',$("td ")): すべての td 要素を含む jQuery オブジェクト配列をログに記録します。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3