你的变量名应该是一致的。您创建的新阵列IMGS(局部变量),但你加入到IMG(默认为全局变量,因为你没有把它声明一个局部变量)。
另外请注意,在Javascript中它没有太大的意义添加var
语句不是一个函数的第一行。这是因为吊装。从本质上讲,使用Javascript将您var
,并将其移动到第一行中,变量设置为undefine
。这可能会也可能不会影响你的程序是如何工作的VS是怎么想它应该工作,所以最好在你的函数的顶部添加所有var
秒。 Javascript具有功能范围,而不是范围范围。
(也注意到maximum
是一个更有意义的变量名比maxium
)
// This adds to the newly created array:
function randImg(){
var img = new Array(), // Note: img NOT imgs
maximum; // Even if a var is below this line, Javascript hoists it here
img[0] = "banner1.png";
img[1] = "banner2.png";
img[2] = "banner3.png";
maximum = img.length;
}
,你可以使用.push()
如果你只是增加了一个数组的结尾(就像你正在做的)
function randImg(){
var img = new Array(), // Note: img NOT imgs
maximum;
img.push("banner1.png");
img.push("banner2.png");
img.push("banner3.png");
maximum = img.length;
}
或
function randImg(){
var img = new Array(), // Note: img NOT imgs
maximum;
img.push("banner1.png").push("banner2.png").push("banner3.png)";
maximum = img.length;
}
或为tter然而,只要使用[]
初始化为空数组或[a,b,c,...]
来初始化元素的数组。另外,为什么使用var
两次?
function randImg(){
var img = ["banner1.png","banner2.png","banner3.png"], // note comma
maximum = img.length;
}
最后,为了不辜负名称的功能
var randImg = function() {
var img = ["banner1.png","banner2.png","banner3.png"];
return img[Math.floor(Math.random()*img.length)];
}
... and here's a working example of randImg()
我没有看到一个'无功img'在那里的任何地方。 –
我要指出,我只得到这个错误在外部JS文件,但如果在内部使用它,我没有错误 – Overcranked