我迷失了这个错误。我正在尝试编写一个函数并在该函数中编写一个数组。在外部js文件中。这将是一个随机图像加载功能,但我不断收到数组错误,无法弄清楚原因。
function randImg(){
var imgs = new Array();
img[0]="banner1.png";
img[1]="banner2.png";
img[2]="banner3.png";
var maxium = img.length;
}
我在var imgs行上收到错误。任何想法?
这是我的新代码调用变量“img”让我离开它加载好但它只打印出变量中的文本而不是实际文件!?所以在运行它说“banner1.png”或“banner3.png”?任何想法
function randImg(){
var banner = new Array();
banner[0] = "banner1.png";
banner[1] = "banner2.png";
banner[2] = "banner3.png";
var maxImg = banner.length;
var randNum = Math.floor(Math.random()*maxImg);
return banner[randNum];
}
答案 0 :(得分:3)
使用元素定义数组的更好方法:
var img = [
"banner1.png",
"banner2.png",
"banner3.png",
"banner4.png"
]
这是您可能需要的功能:
function randImg(){
var img = [
"banner1.png",
"banner2.png",
"banner3.png",
"banner4.png"
]
var maxImg = img.length;
var randNum = Math.floor(Math.random()*maxImg)
return img[randNum]
}
答案 1 :(得分:2)
您的变量名称应该是一致的。您创建了新的数组 imgs (局部变量),但您添加到 img (默认为全局变量,因为您没有将其声明为局部变量)。
另外,请注意,在Javascript中添加一个不是函数第一行的var
语句并没有多大意义。这是因为吊装。从本质上讲,Javascript会将您的var
移到第一行,将变量设置为undefine
。这可能会影响您的计划的工作方式,也可能不会影响您认为它应该如何运作,因此最好将所有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;
}
或更好,只需使用[]
初始化空数组或[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)];
}