NodeList のMDNから:
場合によっては、NodeListはライブコレクションです。つまり、DOMの変更がコレクションに反映されます。たとえば、Node.childNodesはライブです。
var parent = document.getElementById('parent'); var child_nodes = parent.childNodes; console.log(child_nodes.length); // let's assume "2" parent.appendChild(document.createElement('div')); console.log(child_nodes.length); // should output "3"
それ以外の場合、NodeListは静的コレクションです。つまり、DOMのその後の変更はコレクションのコンテンツに影響しません。 document.querySelectorAllは、静的NodeListを返します。
だから....いらいらする! DOM APIのさまざまな部分すべてを個別にチェックする必要なく、どのメソッドがライブリストを返し、どのメソッドが静的リストを返すかについての中心的な参照はありますか?ここで働いているルールはありますか?
中心的な参照があるかどうかはわかりませんが、これは ブログ投稿 のコメントです:
document.getElementsByTagName()
、_document.getElementsByTagNameNS
_およびdocument.getElementsByClassName()
は、「ライブ」ノードリストを返す唯一のオプションです。これらの方法を見ると、がっかりするかもしれませんが、そうではありません。