NodeList オブジェクトはノードのコレクションである。
NodeList は Array とは異なりますが、forEach() メソッドで処理を反復適用することは可能です。Array.from() を使うことで Array に変換することができます。
ただし、古いブラウザーでは NodeList.forEach() も Array.from() も実装されていない場合があります。これらの制限は Array.prototype.forEach を使うことで回避することが可能です(この文書に詳しく書かれています)。
nodeList[i] のアクセスの代替手段です(この場合、i が範囲外の時には undefined が返ります)。これは JavaScript 以外の言語による DOM の実装で便利です。
for (var i = 0; i < myNodeList.length; i++) { var item = myNodeList[i]; }
リストの要素について処理を回すために for...in や for each...in を用いてはいけません。なぜなら、NodeList のプロパティである要素に加えて、length プロパティについても処理が適用されるため、element オブジェクトのみ処理すべきスクリプトではエラーが生じます。また、for..in で取得されるプロパティの順番は保証されていません。
for...of ループであれば、NodeList オブジェクトを正しく扱うことができます。
var list = document.querySelectorAll('input[type=checkbox]'); for (var checkbox of list) { checkbox.checked = true; }
また、Internet Explorer と互換性がある手法として、反復に Array.prototype.forEach を使用することができます。
var list = document.querySelectorAll('input[type=checkbox]'); Array.prototype.forEach.call(list, function (checkbox) { checkbox.checked = true; });
表示内容: |
表示内容: |