使用javascript一次加载/取消隐藏一个图像
Using javascript to load/unhide images one at a time?
我正在尝试制作一个我认为简单的函数。我所要做的就是加载图像,我把其中7个图像插入到我的HTML主体中,就像这样,它们不会在页面加载中显示。但我希望他们以1比1的比例将它们加载到页面上(因此1将每秒加载一次)。就像我在上面写的那样,我在每个图像标签中都有一个id属性,它将对应于我在下面数组中的图像名称。这是我的代码:
<script type="text/javascript">
window.onload = function() {
var images = ["imt","drpepper","principal","grinnell","keyot","vonmaur","thanks"];
for (i=0; i<images.length;i++){
var image = document.getElementById(images[i]);
setTimeout(function(){image.style.visibility = "visible";}, 1000);
}
}
</script>
我已经为此工作了好几个小时了。我不明白为什么它不起作用。请帮忙!
jsFiddle Demo
在这样的setTimeout中使用变量的问题是,它将使用i
的最后一个值。结果是只显示您的最后一张图像。为了使它存储i
的值,您需要关闭该值。这可以通过立即执行函数表达式来完成
for (var i=0; i<images.length;i++){
(function(i){
var image = document.getElementById(images[i]);
setTimeout(function(){
image.style.visibility = "visible";
}, 1000);
})(i)
}
我想我知道这里出了什么问题,归根结底是理解闭包。。。但我可能误解了你的问题。您谈到了加载图像,对我来说,这意味着您正在动态地生成新图像(通过new Image()
),然后动态地设置它们的src
属性(从而导致HTTP请求对它们进行festch)。这是另一个问题,我将假设您的问题是由于关闭造成的。
问题是,当1000ms触发点首次触发时,image
的值将是基于数组中最后一个ID字符串名称提取的最后一个元素。你需要这个代码:
...other code same as before
for (i=0; i<images.length;i++){
(function() {
var image = document.getElementById(images[i]);
setTimeout(function(){image.style.visibility = "visible";}, 1000);
})();
}
...other code same as before
相关文章:
- mouseOver上的隐藏图像问题
- 如何在运行时使用javascript隐藏图像
- 在鼠标悬停处隐藏图像
- 如果没有历史记录,我如何隐藏图像或按钮onclick=;历史.go(-1);
- ImageMapster可以动态显示和隐藏图像选择崩溃
- 当锚点HREF源不存在时隐藏图像
- jQuery UI选项卡基于活动选项卡显示/隐藏图像
- 砖石隐藏图像
- 如何在提交空白表单时隐藏图像
- 循环后如何删除/隐藏图像
- 如果没有src,则使用jquery隐藏图像
- 如何使jquery显示和隐藏图像
- 砌体隐藏图像,直到完全加载
- 在 HTML 表格中显示/隐藏图像
- 点击显示/隐藏图像.没有Javascript
- 使用 jquery 过滤后正确隐藏图像
- 需要按钮显示/隐藏图像旋转 href 添加到 javascript 代码中
- 使用图像滚动达到页面中的最大内容,然后应该使用窗口百分比隐藏图像
- 使用jQuery随机显示/隐藏图像
- 如果没有链接,如何自动隐藏图像