你的變量名應該是一致的。您創建的新陣列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