【发布时间】:2017-12-14 05:39:33
【问题描述】:
这个问题让我心烦意乱。有人能帮我吗?
在我的 html 文件中的 <script> 标记中,我有这个:
window.ondragover = function(e){return false;}
window.ondragenter = function(e){return false;}
window.ondrop = function(e){
var files = e.target.files || e.dataTransfer.files;
for (var i = 0, file; file = files[i];i++){
var img = document.createElement('img');
img.height = 200;
img.width = 200;
img.style.background = 'grey';
document.body.appendChild(img);
var reader = new FileReader();
reader.onload = function(){
img.src = reader.result;
}
reader.readAsDataURL(file);
}
return false;
}
但是当我在浏览器上放置几个图像文件时,只有最后一个图像文件被加载并显示在最后一个 img 元素中,其他的保持灰色。
【问题讨论】:
-
感觉这将是由于您在循环中使用了
img。由于reader.onload是异步的,for循环已经完成,img指向最后一个 -
在第一个循环中,
img被分配给一个新元素,然后它的src被分配给在同一循环中创建的新reader的results。下一个循环:imgvar 被重新分配给一个新元素,它的src被分配给另一个新的reader的result。有错吗?
标签: javascript for-loop filereader