从关联数组/对象中提取的全局变量?

时间:2012-12-12 21:00:52

标签: javascript arrays variables multidimensional-array global-variables

我在页面上有50个点,每个人都有div。当我单击一个时,我想使用ID从数组中提取值。我可以获取ID,但是我无法使用该值从我的数组中获取内容。也许全局变量问题?不确定。甚至不确定这是否是处理访问多个数据的多次点击的最佳方式。任何帮助表示赞赏!

var location0 = {"name" : "Location 1", "image" : "image1.jpg"};

$('.dot').click(function(){
    var thisLocation = $(this).attr("id");
    alert(thisLocation); //Returns "location0"
    alert(thisLocation["image"]); //Returns "undefined"
});

Here's a fiddle.

3 个答案:

答案 0 :(得分:5)

我会这样做:

var locations = {
    location1 : {"name" : "Location 1", "image" : "image1.jpg"},
    location2 : {"name" : "Location 2", "image" : "image2.jpg"}
}

$('.dot').click(function(){
    alert(locations[this.id].name);
});
​

FIDDLE

答案 1 :(得分:2)

$(this).attr("id")返回字符串"location0"。如果要使用它,则必须获得实际的location0变量,因此必须使用eval()函数替换其中一个代码行。像这样:

  

var thisLocation = eval($(this).attr("id"));

我建议使用新的数组,其中"location0"是关键字,然后您只需要使用locations["location0"]之类的字符串访问密钥,并避免使用eval()

答案 2 :(得分:0)

您需要像这样访问它:

var test = {
    location0:    {"name" : "Location 1", "image" : "image1.jpg"}
};


$('.dot').click(function(){
    var thisLocation = $(this).attr("id");
    alert(thisLocation); //Returns "location0"
    alert(test[thisLocation]["image"]); //Returns "undefined"
});

编辑:此作品

同样,它首先不适合你的原因是因为thisLocation是一个字符串,而不是它自己的对象,所以你需要使用括号通过传递名称来访问对象属性。我只是不建议