【发布时间】:2014-08-21 06:45:27
【问题描述】:
此代码仅显示单个选定的图像。列表中选择的最后一张图像。我认为循环位置不正确或附加代码不正确。我也尝试过改变位置,但同样的事情只显示单个图像。
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader(),
count = input.files.length;
for(i=0;i<=count;i++){
reader.onload = function (e) {
//$('.image_preview_cont').html('<img src="'+e.target.result+'" />');
$('.image_preview_cont').append('<img src="#" id="img_preview'+i+'" />');
$('#img_preview'+i).attr('src',e.target.result);
}
reader.readAsDataURL(input.files[i]);
}
}
}
HTML:
<tr>
<td class="tdhead">Product Image</td><td><input type="file" name="p_image[]"
id="imgInp[]" multiple="true" onchange="readURL(this)" /><td>
</tr>
<tr>
<td colspan="2"><div class="image_preview_cont"></div></td>
</tr>
【问题讨论】:
-
在 reader.onload 函数中检查 i
-
reader.onload函数@Dart里面有两个"i"
-
你不应该依赖 reader.onload 中的“i”,更好地计算 .image_preview_cont 中的 imgs,并使用此计数值而不是“i”。因为 reader.readAsDataURL 将异步执行(AFAIK)
-
删除“i”也不会发生任何事情。你能建议用代码@Dart 回答吗
-
这里是示例:jsfiddle.net/10r0kdex/2
标签: javascript html file-upload filereader