My test code:
var imageUploadPreview = function (e) {
var input = document.getElementById("file"),
files = e.target.files;
for (var i = 0; i < files.length; i++) {
if (input.files) {
var file = files[i],
reader = new FileReader();
reader.onload = function (e) {
(function (i) {
var img = $('<img>').prop('id', 'img_' + i)
.prop('src', e.target.result).css({'width':'60px', 'height':'60px'});
var div = $('<div>').append(img).append(img.prop('id'))
$('body').append(div);
})(i)
}
reader.readAsDataURL(file);
}
}
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="file" id="file" onchange="imageUploadPreview(event)" multiple />
It's working except: all image ids are img_ + files.length
Can you explain me why? What's happen with the loop?