我在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',而是您要命中的对象。