Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何显示'的价值;i';(for循环)在FileReader.onload内_Javascript_Html_Dom Events_Filereader - Fatal编程技术网

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);