【Javascript】IE11ではNodeListに対してforEachが使用できない

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です