我有一个名为前映像的数组,写为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
}
答案 0 :(得分:4)
图像是异步加载的,所以当console.log运行时,frontImages的长度仍为0.
您需要等待图片加载才能查询任何信息(通过使用jQuery Deferred或其他一些自定义构造)
答案 1 :(得分:4)
你是在onload函数执行之前将数组打印到控制台,那时数组是空的,因为你正在等待的图像还没有加载?