我正在开发一个 HTML5 画布游戏,并且我有一组图像被绘制到画布上。数组中的图像当前都被正确绘制,我有一个 console.log 行,我想用它来在控制台中显示数组的大小。但由于某种原因,控制台一直告诉我数组长度未定义。
我用来打印数组长度的行是:
console.log("sources array length = " + sources.length);
它在一个 for 循环中:
for (index=0;index < numImages ;index++){
console.log(index);
images[index] = new Image();
images[index].src = sources[index];
console.log("Adding " + sources[index]);
callback(images[index]);
console.log("sources array length = " + sources.length);
}
如您所见,我在循环中有另一个 console.log 语句,用于记录每次运行循环...
console.log(index);
此行在每次运行循环时打印变量 index 的值,从 0 开始,每次增加 1,直到循环到达等于变量 'numImages' 的值时结束。
但是,由于某种原因,每次循环运行时,应该打印数组长度的行都显示“源数组长度=未定义”,而不是数组的实际长度。
谁能向我指出这是为什么?每次运行循环时,如何让它显示源数组的长度?
编辑 13/02/2013 @ 15:10
源数组在同一个文件中定义,使用以下行:
var sources = {};
我没有为数组定义设定长度的原因是因为我需要它的长度是动态的。然后我使用这样的行将元素添加到数组中:
sources[0] = document.getElementById("building").src,
sources[1] = document.getElementById("chair").src,
sources[2] = document.getElementById("drink").src,
sources[3] = document.getElementById("food").src,
所以我想要我的console.log 行做的是告诉我当前数组的长度,即添加了多少元素。正如您在原始帖子中的第一段代码中看到的那样,我有一个 console.log ,每次将元素添加到源数组时,它都会向控制台打印一条消息 - 它们显然被正确添加,否则,它们不会显示在画布上......因此数组必须具有在图像绘制到画布时定义的长度,否则它们不会在要绘制的数组中。