我有一系列图片
var photos = ["images/bg01.jpg", "images/bg02.jpg", "images/bg03.jpg"];
我在这个数组中循环,并根据间隔
将它们作为div的背景$("#bgimg" + activeContainer).css({
"background-image" : "url(" + photos[i] + ")",
"display" : "block",
"z-index" : currentZindex
});
编辑:我需要在执行setInterval函数之前预先加载所有三个图像。
提前致谢!!
答案 0 :(得分:1)
(function($) {
var photos = ["images/bg01.jpg", "images/bg02.jpg", "images/bg03.jpg"];
var i = 0;
function preloadImage() {
var image = new Image();
image.onload = function() {
$("#bgimg" + activeContainer).css({
"background-image" : "url(" + photos[i] + ")",
"display" : "block",
"z-index" : currentZindex
});
i++;
preloadImage();
};
image.src = photos[i];
};
}(jQuery);
这将...
答案 1 :(得分:1)
将变量设置为必须加载的图像数。每次图像完成加载时减少计数器,当计数器达到零时,开始显示图像。
function photoLoaded() {
if(!--numPhotosLeft) {
// start showing images
}
}
var photos = ["images/bg01.jpg", "images/bg02.jpg", "images/bg03.jpg"];
var numPhotosLeft = photos.length;
for(var i = 0; i < photos.length; ++i) {
var img = new Image();
img.onload = photoLoaded;
img.src = photos[i];
}
答案 2 :(得分:0)
你可以这样做:
var imgCount = images.length;
var counter = 0;
$.each(images, function(i, n) {
// load each image
$("<img />").attr("src", n)
.load(function() {
counter++;
if(imgCount == counter) {
// all images have loaded
// call setInterval
}
});
});