
getElementsByClassName() を使用して以下のエラー内容が表示された時の原因と解決方法です。
getElementsByClassName(…).addEventListener is not a function
もし同じような書き方で同様のエラーが出ている方は参考にしてみてください。
エラーが出るコード内容
getElementsByClassName() を使ったエラーコードがこちら。要素を取得し、クリックイベントを発生させようとして実装したコードです。
JavaScript
document.getElementsByClassName('className').addEventListener("click", function(){
console.log(hoge);
}, false);【解決方法】getElementsByClassName に for文をセット
getElementsByClassName の中身は「配列風オブジェクト」になっているためfor文で回して取得する必要がありました。以下のコードに修正したところ、エラーは出ずイベント処理もうまくいきました。
JavaScript
const className = document.getElementsByClassName('className');
for(var i = 0; i < className.length; i++) {
className[i].addEventListener("click", function () {
console.log(className);
}, false);
}IDを取得する場合は、 getElementById('id_name') だけで問題ないのですが、クラスを取得する getElementsByClassName の場合は、for文が必須になります。
カテゴリー : JavaScript





