0

重複の可能性:
ループ内の Javascript クロージャー - 簡単な実用例

image.onload次のような呼び出しでループがあります。

for (var i = 0; i < array.length; i++){
  var item = array[i]
    , image = new Image();

  image.onload = function(){
    // do something with 'item'
  }
  image.src = url;
}

onload関数がいつトリガーされるかわからないため、item上書きされていると思います。関数がイベントにバインドされたときに実行するデータを参照する変数で、各onload関数が確実にトリガーされるようにするにはどうすればよいですか?itemonload

4

2 に答える 2

0

これは機能するはずです。

image.onload = function(item){
    return function(){
      // do something with 'item'
    }(item);
};

あなたがしたいのは、イベント関数が呼び出されたときにクロージャがあなたが望む値をもたらすように「スコープ」を作成することです。

于 2012-08-29T02:34:40.583 に答える
0

IIFEを使用して、現在のアイテムを使用する関数を返します

  image.onload = (function(param){
    return function(){
    //do something with 'param'
    }
  })(item);
于 2012-08-29T02:34:47.410 に答える