【发布时间】:2015-06-26 20:39:59
【问题描述】:
我编写了一些代码,用户可以通过 zip 上传一些图片。在下一页上,我需要在 85*85 像素的框架中单独显示所有图像。
问题是加载所有图像可能需要一些时间。 所以我想在用户等待图片加载时显示加载 gif。
我已将图像的 src 设置为the loading gifs,同时我创建了一些以真实来源为 id 的复选框
echo "<td><img src=\"beelden/ajax-loader-black-16.png\" id=\"img".$image."\" style=\" width: 85px; height: 85px; border: 1px solid gray; background-color: #fff; padding: 10px;\">";
echo "<input type=\"checkbox\" id=\"img[".$image."]\" name=\"check_image[]\" value=\"".$filename."\" /></td>";
<input type="hidden" name="aantal" id="aantal" value="<?=$image?>" >
然后我创建了一些 javascript 来检查图像是否已加载,当加载时,它应该替换图像的来源。
<script>
var aantal = document.getElementById("aantal").value;
for(var i = 0; i < aantal; i++){
var source = document.getElementById("img["+i+"]").value;
var img = new Image();
img.onload = function(){
$("#img"+i).attr('src', source);
}();
img.src = source;
}
</script>
但这并不像我预期的那样工作,我认为一旦加载第一个图像,它就会为所有图像触发。任何想法我做错了什么或如何解决这个问题?
【问题讨论】:
-
你如何调用你的javascript函数??
-
闭包下循环变量的经典案例。
-
为快速编辑和演示创建一个小提琴
-
你能创造一个小提琴或一个plunker吗?你写 `document.getElementById("img["+i+"]").value;` 和
$("#img"+i).好混乱 -
考虑不要使用闭包,因为在这种情况下肯定会导致 DOM 节点上的内存泄漏。声明一个将
i作为参数的外部函数,然后在每个循环中调用它。
标签: javascript jquery image