【Javascript】IE11ではNodeListに対してforEachが使用できない
タイトルそのままです。
こんな処理を書いていました。
function eventSetting(){
var elementList;
// 対象の要素を取得する
elementList = document.querySelectorAll('selector');
// 動作を設定する
elementList.forEach(function(ele, index, arr){
// クリック時処理を設定する
ele.addEventListener('click', func);
});
}
// クリック時処理
function func(){
}
Chromeやfirefoxはちゃんと動作したのですが、IEではエラーとなってしまいました。
どうやら、IEではサポートしていないようです。
なので、こんな風に直しました。
function eventSetting(){
var elementList;
var ele;
var i;
// 対象の要素を取得する
elementList = document.querySelectorAll('selector');
// 動作を設定する
for(i = 0; i < elementList.length; i++){
// 対象の要素を取得する
ele = elementList[i];
// クリック時処理を設定する
ele.addEventListener('click', func);
}
}
// クリック時処理
function func(){
}
ごく一般的なfor文ですね。
調べたところ、一度配列に直してforEachを利用するという人も結構いました。
個人的には読みやすいのでこちらにしてしまいました。
Array.prototype.forEach.callを利用する方法もあるようです。
https://developer.mozilla.org/ja/docs/Web/API/NodeList
No comments.