我一直在预览多个图像,然后尝试使用@ ratan-paul对"Preview an image before it is uploaded"的响应非常有用。但是,当我试图调整代码有点我得到了一个意想不到的结果。我所做的是为每个<image>
创建一个<span>
标签以添加一些样式选项。这里是jQuery代码我结束了:在上传前预览图像时发生意外的行为
$(function() {
var span_id = "";
function readURL(input) {
for(var i =0; i< input.files.length; i++){
var span = $('<span>');
span_id = "span"+i;
span.attr('id',span_id);
span.appendTo('#img-previews');
if (input.files[i]) {
var reader = new FileReader();
reader.onload = function (e) {
var img = $('<img id="dynamic">');
img.attr('src', e.target.result);
img.attr('height','150px');
img.attr('width','200px');
img.appendTo("#"+span_id);
};
reader.readAsDataURL(input.files[i]);
}
}
}
$("#imgUpload").change(function(){
readURL(this);
});
});
现在奇怪的是,当我运行上面的代码我创建的每个图像的<span>
标签,但所有的图像得到塞进创建的最后一个<span>
。另一方面,如果我调试脚本,我会得到想要的结果,其中每个图像都插入到它自己的<span>
标记中。我对此感到困惑,所以如果任何人有任何想法,为什么会发生这种情况,或者如何避免这种情况,将不胜感激。
我试着用let语句@duncan-smith切换我的for循环,但结果没有改变。在我的IDE(phpstorm 2017.1.4)中,'let'被表示为“当前JavaScript版本中不支持当前定义”的错误。我正在使用yii2框架,并且当前安装的jquery版本是2.2.4。我目前正在测试的浏览器是Mozilla firefox 54.0(32位),firefox开发者版本55.0b6(64位)和chrome 59.0.3071.115(官方版本)(64位)。任何想法是什么问题? – natral
@natral,我已经更新了我的答案。看看它是否适合你。 –
伟大的,帮助了很多@邓肯。谢谢! – natral