JavaScript querySelectorAllで取得したデータをforEachでループする
JavaScript
のquerySelectorAll
で取得したデータをforEach
でループする方法を紹介します。
querySelectorAll
は配列ではなくNodeList
で取得されます。
そのため、for
文は可能ですが、forEach
はできません。
var elems = document.querySelectorAll('[data-val]');
// OK
for (var i = 0; i < elems.length; i++) {
console.log(elems[i].id);
}
// NG
elems.forEach(function(elem) {
console.log(elem.id);
});
NodeListを配列に変換する
forEach
を使用するために、NodeList
配列に変換します。
少しトリッキーですが、以下のファンクションで変換できます。
// NodeListを配列に変換する
function toArray(nodeList) {
return Array.prototype.slice.call(nodeList, 0);
}
// OK
var elems = document.querySelectorAll('[data-val]');
toArray(elems).forEach(function(elem) {
console.log(elem.id);
});