前に、getElementsByClassNameでDOM操作をしようとして、getElementByIdと同じように扱ったらダメなことを知っていたけど、どうやったら良いか忘れたので、メモ
戻り値が違う
getElementsByClassName の戻り値:HTMLCollection
getElementsByTagName の戻り値:HTMLCollection
querySelectorAll の戻り値:NodeList
このため、getElementsByClassName で取得した場合は、変換する必要がある。
let kirikae = document.getElementsByClassName("js-kirikae");
// 配列に変換
var kirikaeArray = Array.prototype.slice.call(kirikae);
// for文で操作する
for (var i = 0; i < kirikaeArray.length; i++) {
// input要素 class名がjs-kirikaeの、requiredを消す
kirikaeArray[i].required = false;
// コンソールに表示する
console.log(kirikaeArray[i]);
}
このような方法もあるみたい(使ったことなし)
let kirikae = document.getElementsByClassName("js-kirikae");
// HTMLCollectionを配列へ変換
const htmlCollectionArray = Array.prototype.slice.call(kirikae);
また、Array.prototype.forEach.callを使う方法もあるみたい。


