はじめに
この記事では、JavaScriptの要素セレクタにおけるLive NodeList
とStatic NodeList
の違いを解説する。
要素セレクタとは
要素セレクタは、HTML ドキュメント内の要素を選択するために使用される関数である。JavaScript には、さまざまな要素セレクタが用意されており、それらを使って HTML 要素にアクセスして操作できる。
この記事では、JavaScriptの要素セレクタにおけるLive NodeList
とStatic NodeList
の違いを解説する。
要素セレクタは、HTML ドキュメント内の要素を選択するために使用される関数である。JavaScript には、さまざまな要素セレクタが用意されており、それらを使って HTML 要素にアクセスして操作できる。
Live NodeList
は、取得した要素リストが動的に更新される。元のHTMLに変更が加わると、リストの内容も自動的に変わる。つまり、元の HTML ドキュメントが変更されると、Live NodeList も自動的に更新される。
Live NodeListを生成するメソッド
const liveNodeList = document.getElementsByClassName('example');
このgetElementsByClassName
は、指定したクラスを持つ要素をリアルタイムに取得する。
同様に、以下のメソッドもLive NodeList
を返す。
getElementsByTagName
getElementsByName
childNodes
Static NodeList
は、取得した時点の要素リストが固定される。HTMLの変更があっても、リストの内容は更新されない。そのため、元の HTML ドキュメントが変更されても、Static NodeList の内容は変わらない。固定された要素リストを扱う場合に便利である。
Static NodeListを生成するメソッド
const staticNodeList = document.querySelectorAll('.example');
このquerySelectorAll
は、指定したセレクタに一致する要素を取得し、リストの内容を固定する。
メソッド | 返すオブジェクト | 特性 |
---|---|---|
getElementsByTagName | HTMLCollection | Live(動的に更新) |
getElementsByClassName | HTMLCollection | Live(動的に更新) |
querySelectorAll | NodeList | Static(固定) |
getElementById | HTMLElement | Static(単一要素) |
querySelector
やgetElementById
は単一の要素を取得するため、厳密にはNodeList
ではないが、固定された結果を返す点でStatic
と同じ扱いになる。
Live NodeList
とStatic NodeList
には、それぞれメリット・デメリットがある。
DOMが頻繁に変化する場面ではLive NodeList
が便利。ただ、大量の要素を扱う場合はStatic NodeList
のほうが負荷は少なく効率的。