我在Javascript中有以下数组:

//the image xpto is in the position
    //  (x,y)        (x+width,y)
    //  (x,y+height) (x+width,y+height)
    var imageLocations = {
        album : [ 0, 0, 0, 0, "Photo Album", false],
        interest : [ 0, 0, 0, 0, "Interests", false],
        family : [ 0, 0, 0, 0, "People", false],
        places : [ 0, 0, 0, 0, "Places", false],
    };


然后我添加此事件侦听器:

canvas.addEventListener("click", on_click(imageLocations), false);


当我将他传递给onClick的imageLocations时,已经定义了imageLocations,但是当我在以下代码中使用它时,我无法读取undefined的属性“ 5”:

//if the link has been clicked, go to link
    function on_click(e, imageLocations) {
        if (imageLocations[0]**[5]**) {
            window.location = "photoalbum.jsp?book="+imageLocations[0][4];
        }else if(imageLocations[1][5]){
            window.location = "photoalbum.jsp?book="+imageLocations[1][4];
        }else if(imageLocations[2][5]){
            window.location = "photoalbum.jsp?book="+imageLocations[2][4];
        }else if(imageLocations[3][5]){
            window.location = "photoalbum.jsp?book="+imageLocations[3][4];
        }
    }


在此功能中,我无法访问[5]。为什么是这样?我知道这可能是范围问题,但是如何正确将参数imageLocations传递给此函数?

最佳答案

您有一个包含数组的对象。与多维数组不一样。

尝试通过属性名称访问此对象。

imagelocations['album'][5]


错误非常明显-并非未定义'5',而是您要命中的对象。

10-07 17:34