在用ajax上传之前,我正在尝试显示一个预览和图片名称。我使用显示预览,同时使用".name“方法显示文件名,问题是它显示了所有预览但是所有图像都有相同的名称,最后一个文件名。谢谢!
$('input').change(function(){
for (var i=0; i<this.files.length; i++){
var reader = new FileReader()
reader.onload = function (e) {
$('ul').append('<li><img src="'+e.target.result+'">'+this.files[i].name+'</li>')
}
reader.readAsDataURL(this.files[i])
}
})发布于 2014-04-07 22:48:02
创建一个新的作用域(闭包)以保持i的值,就像异步onload处理程序触发时,循环已经完成,i的值将是最后一组,将其传递给IIFE解决了这个问题。
$('input').change(function () {
for (var i=0, len = this.files.length; i < len; i++) {
(function (j, self) {
var reader = new FileReader()
reader.onload = function (e) {
$('ul').append('<li><img src="' + e.target.result + '">' + self.files[j].name + '</li>')
}
reader.readAsDataURL(self.files[j])
})(i, this);
}
});小提琴
https://stackoverflow.com/questions/22924447
复制相似问题