Javascript 如何显示'的价值;i';(for循环)在FileReader.onload内
我试图通过Javascript 如何显示'的价值;i';(for循环)在FileReader.onload内,javascript,html,dom-events,filereader,Javascript,Html,Dom Events,Filereader,我试图通过input file显示多个图像文件的预览,并为每个文件分配一个特定的id(I,由for循环生成)。一切正常,但分配id时存在问题 我的代码是: function fileSelected() { var files = event.target.files; for(var i=0; i<files.length; i++) { var reader = new FileReader(); reader.onload = function(event)
input file
显示多个图像文件的预览,并为每个文件分配一个特定的id(I
,由for循环生成)。一切正常,但分配id时存在问题
我的代码是:
function fileSelected() {
var files = event.target.files;
for(var i=0; i<files.length; i++) {
var reader = new FileReader();
reader.onload = function(event) {
var picWrap = '<img id="'+i+'" src="'+event.target.result'" />';
}
reader.readAsDataURL(files[i]);
} }
如果我选择了3个文件,那么我会得到所有3个文件的预览,但是每个图片的ID都会变为3,如果我选择了单个文件,那么I值会变为1而不是0。问题是,当
onload
事件发生时,循环已经完成,循环索引是最后一个值。
一个选项是执行以下操作,将回调中的i设置为调用bind时提供的值:
reader.onload = (function(i, event) {
var picWrap = '<img id="'+i+'" src="'+event.target.result'" />';
}).bind(reader, i);
reader.onload=(函数(i,事件){
var picWrap='';
}).bind(reader,i);
您应该在文件输入字段中使用onChange。
reader.onload = (function(i, event) {
var picWrap = '<img id="'+i+'" src="'+event.target.result'" />';
}).bind(reader, i);