2017-07-10 8 views
1

私は1つまたは複数の画像を選択しアップロードするためにhtmlで1つの入力を使用しています。javascript FileReader multiple not working

画像をアップロードする前にプレビューを表示したいのですが、js FileReaderを使用しています。 1つの画像では動作しますが、複数の画像では動作しません。

$('#fileToUpload').change(function(){ 
    var file = this.files; 
    filepreview(file); 
}); 



function filepreview(files) 
{ 
    var length = files.length; 

    for(var i=0 ; i<length ; i++) 
    { 
      var file = files[i]; 

      var reader = new FileReader(); 
      reader.addEventListener("load",function(e){ 
       $('#pic'+i+'').attr('src' , ''+e.target.result+''); 
      }); 
      reader.readAsDataURL(file); 
    } 
} 
+0

[JavaScriptを使用可能な複製ループ内のクロージャー - 簡単な実用例(https://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example) –

答えて

1

ループが繰り返された後のイベントが発生したとして、私は、常に長さであることを基本的にその:

reader.addEventListener("load",function(e){//async stuff 
      $('#pic'+i+'').attr('src' , ''+e.target.result+'');//i = length 
}); 

だから、あなたは私をバインドすることもできます。

reader.addEventListener("load",function(i,e){//take over the bound i 
      $('#pic'+i+'').attr('src' , ''+e.target.result+''); 
}.bind(this,i));//the magic part 
+0

ああありがとうございました。それは本当に小さな問題でした。 ❤️ –

+1

@ K1-Aria youreようこそ;) –