Need help creating three blocks using a loop

Following 3 blocks of code, you want to generate with a loop / array to make a short code. I know that using a loop is not a big thing, but for me it is difficult to change the counter with the variable "openFile", I want the counter to increase with the variables "openFile" such as openFile1, openFile2 and openFile3 with each iteration of the loop.

$(function() {

            var openFile1 = function(event) {
        var input = event.target;
        var reader = new FileReader();
        reader.onload = function(){
          var dataURL = reader.result;
          var output = document.getElementById('img1');
          output.src = dataURL;
        };
        reader.readAsDataURL(input.files[0]);
      };



      var openFile2 = function(event) {
        var input = event.target;
        var reader = new FileReader();
        reader.onload = function(){
          var dataURL = reader.result;
          var output = document.getElementById('img2');
          output.src = dataURL;
        };
        reader.readAsDataURL(input.files[0]);
      };

      var openFile3 = function(event) {
        var input = event.target;
        var reader = new FileReader();
        reader.onload = function(){
          var dataURL = reader.result;
          var output = document.getElementById('img3');
          output.src = dataURL;
        };
        reader.readAsDataURL(input.files[0]);
      };


       });
+6
source share
4 answers

, count arg , arg. - , 'count', openFile count, .

  var openFileFunc = function(count) {
    return
        function(event) {
        var input = event.target;
        var reader = new FileReader();
        reader.onload = function(){
          var dataURL = reader.result;
          var output = document.getElementById('img'+(count+1));
          output.src = dataURL;
        };
        reader.readAsDataURL(input.files[count]);
      };
    }

, , , ​​ :

var functions = [1,2,3].map(openFileFunc)

, .

+10
var openFile = function(arrOfCount){
    var reader; 
    for(i=0;i<arrOfCount;i++){
       reader= new FileReader();
       return  function(event){
             var input = event.target;
             reader.onload = function(){
                  var dataURL = reader.result;
                  var output = document.getElementById('img'+(i+1));
                  output.src = dataURL;
              };
            reader.readAsDataURL(input.files[i]);
          }
      }
}
+2

, .

function callFunctionNtimes(totalCount){

        for(start=1;i<=totalCount;i++)
        {
            var filevar = 'openFile'+start;
            filevar = function(event) 
            {
                var input = event.target;
                var reader = new FileReader();
                reader.onload = function()
                {
                    var dataURL = reader.result;
                    var output = document.getElementById('img'+start);
                    output.src = dataURL;
                };
                    reader.readAsDataURL(input.files[0]);
            };
        }
     }
       //to call n time below function  
       var totalCount = 3;
       callFunctionNtimes(totalCount);
+2

 var allImages = document.getElementsByClassName("my-images");
 for (var i = 0; i < allImages.length; i++) {
      var openFile = function(event) {
        var input = event.target;
        var reader = new FileReader();
        reader.onload = function(){
          var dataURL = reader.result;
          var output = allImages[i];
          output.src = dataURL;
        };
        reader.readAsDataURL(input.files[0]);

}

, 3 , , ?

+1

All Articles