JavaScript image preloading

Discussion in 'JavaScript' started by cre8ive, Apr 4, 2008.

  1. #1
    One of websites that I'm currently working on displays two JavaScript slide shows. If and when all images are loaded, then the website looks fine, but if not, slide shows look really messy; I need to resolve this problem.

    I believe JavaScript image preloading is the solution to this problem, but I already preload images like the following:

    var logoImage = new Array();
    for (var i = 0; i < 11; i++)
    {
    	logoImage[i] = new Image();
    }
    logoImage[0].src="images/logo.jpg";
    logoImage[1].src="images/logo.jpg";
    logoImage[2].src="images/logo.jpg";
    logoImage[3].src="images/logo.jpg";
    logoImage[4].src="images/logo.jpg";
    logoImage[5].src="images/logo1.jpg";
    logoImage[6].src="images/logo2.jpg";
    logoImage[7].src="images/logo3.jpg";
    logoImage[8].src="images/logo4.jpg";
    logoImage[9].src="images/logo5.jpg";
    logoImage[10].src="images/logo6.jpg";
    Code (markup):
    (Yeah, I know, the code looks very messy, but I just want this to work rather than to write an elegant code.)

    What am I missing? What can I do to ... get this JavaScript image preloading work ...???

    (BTW, the following is the test site: http://www.cre8iveonline.com/jewelry/index.htm )
     
    cre8ive, Apr 4, 2008 IP
  2. stephan2307

    stephan2307 Well-Known Member

    Messages:
    1,277
    Likes Received:
    33
    Best Answers:
    7
    Trophy Points:
    150
    #2
    stephan2307, Apr 8, 2008 IP
  3. qeorge

    qeorge Peon

    Messages:
    206
    Likes Received:
    2
    Best Answers:
    0
    Trophy Points:
    0
    #3
    You need to populate the array before you loop through it:

    var logoImage = new Array();
    logoImage[0].src="images/logo.jpg";
    logoImage[1].src="images/logo.jpg";
    logoImage[2].src="images/logo.jpg";
    logoImage[3].src="images/logo.jpg";
    logoImage[4].src="images/logo.jpg";
    logoImage[5].src="images/logo1.jpg";
    logoImage[6].src="images/logo2.jpg";
    logoImage[7].src="images/logo3.jpg";
    logoImage[8].src="images/logo4.jpg";
    logoImage[9].src="images/logo5.jpg";
    logoImage[10].src="images/logo6.jpg";

    for (var i = 0; i < 11; i++)
    {
    logoImage = new Image();
    }


    I moved the code in red. In the code you posted, you're looping through an empty array, and then you add the items after the preloading loop has already completed. :D
     
    qeorge, Apr 10, 2008 IP