我正在尝试制作图像预加载程序。有一系列低分辨率图像和一系列高分辨率图像。我创建一个新的图像对象并通过循环运行以预加载这些图像。然后,我使用一行Jquery将背景设置为使用低分辨率图像,直到高分辨率对象加载完毕,并在加载时使用另一行Jquery切换背景以使用此高分辨率图像。图像预加载器
我遇到的问题是代码跳过了低分辨率背景设置并加载了高分辨率图像。
下面是代码:
// Low res image array
var lowres = ["image1lr.jpg", "image2lr.jpg", "image3lr.jpg", "image4lr.jpg"];
// Full res image array
var images = ["image1.jpg", "image2.jpg", "image3.jpg", "image4.jpg"];
// Low res image path
var lowresimagepath = "url(images/rotate-background/low_res/";
// Full res image path
var imagepath = "url(images/rotate-background/";
// Counter
var i = 0;
// Image preloading
for(i=0; i<=images.length; i++)
{
// Create object
imageObj = new Image();
imageObj.src = imagepath + images[i] + ')';
}
//Generate random number
var rannum = Math.floor(Math.random() * images.length);
//Set background image to random low res image
$(".bg_home").css({'background-image': lowresimagepath +lowres[rannum]+')'});
//Once image objects are loaded switch to high res image
imageObj.onLoad= function(){
$(".bg_home").css({'background-image': imagepath + images[rannum] + ')'});
}
imageObj.src = imagepath + images [i] +')';我不确定这只是一个错字。 –
感谢您指出,这是我的代码中的错误。尽管我仍然有同样的问题,但我已经修复了它。 (我编辑了我的帖子以反映这一点) –
在最后一行,你必须将你的代码包装在一个函数'imageObj.onLoad = function(){......}' –