14

したがって、配列をループして画像をロードし、画像がロードされたときに通知するこのコードがあります。

for (var i = 0; i < arr.length; i++) {                
    var imageObj = new Image();
    imageObj.src = url[i];
    imageObj.onload= (function(i){
                return function(){
                    console.log(i, 'loaded');
                }
            })(i);

}

それは正常に動作します。しかし、私がこれをやろうとすると、うまくいきません

imageObj.addEventListener('onload', function(
    console.log(i, 'loaded');
}, false);

何が問題ですか?この場合、閉鎖の使用を避ける方法はありますか?

4

1 に答える 1

22

問題の一部:イベントは呼び出されませんonloadが、load

imageObj.addEventListener('load', function() { /* ... */ }, false);

それ以外iは、イベントリスナー関数の外部で変更されるため、クロージャーが必要です。

于 2012-04-12T10:45:56.567 に答える