数组语法错误新手

时间:2011-10-08 02:19:42

标签: javascript

我迷失了这个错误。我正在尝试编写一个函数并在该函数中编写一个数组。在外部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];
}

2 个答案:

答案 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)];
}

... and here's a working example of randImg()