0

我有一个名为 front images 的数组,写成var frontImages = [];. 据我了解,javascript 数组不需要指定长度。当我运行下面的代码时,它会在输出到控制台时打印 0 作为数组的长度。但是,当我将数组长度指定为 时var frontImages = new Array(3);,它会打印出 3,即数组的正确长度。为什么未指定长度的数组不返回 3?

function getMainPosters() {

    var games = new Image(); //create 3 images
    var apps = new Image();
    var aboutme = new Image();

    games.onload = function() { //add image to frontImages array on load

        frontImages.push(games);

    };

    apps.onload = function() {

        frontImages.push(apps);

    };

    aboutme.onload = function() {

        frontImages.push(aboutme);

    };

       games.src = "images/assets/posters/games_poster.jpg"; //specify source of image
       apps.src = "images/assets/posters/apps_poster.jpg";
       aboutme.src = "images/assets/posters/aboutme_poster.jpg";

       console.log(frontImages.length); //print the length of frontImages to console

}
4

2 回答 2

4

图像是异步加载的,所以当 console.log 运行时,frontImages 的长度仍然为 0。

您需要等待图像加载,然后才能针对它们查询任何信息(通过使用 jQuery Deferred 或其他一些自定义构造)

于 2013-02-20T21:03:45.467 回答
4

您在执行 onload 函数之前将数组打印到控制台,当时数组为空,因为您正在等待的图像尚未加载?

于 2013-02-20T21:03:51.210 回答