【发布时间】:2013-02-18 19:06:05
【问题描述】:
我正在尝试创建预加载器,但是当我运行它时,控制台会显示:
已加载 [object HTMLImageElement],共 5 个
从这行代码
console.log('Loaded ' + images[i] + ' of ' + images.length);
但理想情况下我希望它显示:
“已加载 1 个,共 5 个”
我该如何解决这个问题?我只想将其创建为回调,以便知道某个面板中的所有图像何时加载。
$(panel).each(function(){
// Find Panel
var panelId = $(this).attr('id');
console.log('Loading ' + panelId);
// Find Images
var images = $(this).find('img');
var path = images.attr('src');
console.log('Total of ' + images.length + ' Images');
// Preload Images
for( i= 0; i < images.length; i++ ) {
images[i] = new Image();
images[i].src = path;
images[i].onload = function(){
console.log('Loaded ' + images[i] + ' of ' + images.length);
};
}
// End
});
另外 - 我如何修改我的 each() 循环,在前一个面板完成检查后检查每个面板?
任何帮助都会很棒。谢谢。
【问题讨论】:
-
@ÁlvaroG.Vicario 来自 for 循环?我认为需要从循环中拉出 [i] 变量?
-
对不起,我看错了你的问题,我会删除我的评论。
-
无论如何您都不能真正使用
i,因为不能保证图像加载的顺序。如果你使用i,你可能会得到1,3,2,4,5,具体取决于每张图片的大小。此外,在您上面的代码中,您总是得到相同的images[i],即最后一个。 -
@KevinB 有道理,只要我知道加载了哪些顺序,我就不会太在意它加载它们的顺序。