JavaScript - HTMLCollectionとNodeListの違い
JavaScriptのDOM操作で、要素取得のメソッドによって戻り値が HTMLCllectionオブジェクトであったり、 NodeListオブジェクトであったりします。
両者はどう違うのでしょうか?
ここでは、HTMLCllectionとNodeList違いについて説明します。
どのメソッドの戻り値かが違う
HTMLCllectionオブジェクトを戻すメソッド
- document.getElementsByTagName()
- document.getElementsByClassName()
NodeListオブジェクトを戻すメソッド
- document.getElementsByName()
- document.querySelectorAll()
使えるメソッドが違う
HTMLCllectionとNodeListでは、使えるメソッドが違います。
NodeListの方が多くあります。
HTMLCllectionオブジェクトのメソッド
- HTMLCollection.item()
- HTMLCollection.namedItem()
NodeListオブジェクトのメソッド
- NodeList.item()
- NodeList.entries()
- NodeList.forEach()
- NodeList.keys()
- NodeList.values()
両者に共通しているのは、item()メソッドだけです。
後はどちらかにあるだけで、NodeListオブジェクトの方が多くあります。
メソッドを見てみると、NodeListオブジェクトの方が、 より配列に近いメソッドが使えます。
NodeList.forEach()メソッドを使ってみる
NodeList.forEach()メソッドを使って、次のような記述もできます。
var nodes = document.querySelectorAll('p');
nodes.forEach(function(node){
console.log(node.textContent);
});
まとめ
・どのメソッドの戻り値かが違います。
・NodeListの方がメソッドが多くあります。
・ただし、実際のDOM操作において、 HTMLCllectionとNodeListはほぼ同じだと思っていてよいでしょう。