【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.