2014-01-09 188 views
1
<div id="bach">Bach</div> 
<div id="show">about composer</div> 

$(window).load(function(){  
    bach = {"bdate": 1685, "bplace": "Eisenach, Germany"} 

    $("div").click(function(){ 
    $("#show").text(this.id['bdate']); // This is the problem 
    });  
}); 

嗨,我目前正在尝试创建一种方法来动态访问bach对象。如果我使用bach而不是this.id,那么一切正常。不知何故,我需要找到一种方法来将this.id转换为我可以在访问bach对象中的属性的上下文中使用的方法。对象属性动态

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Member_Operators

Javascript: interpret string as object reference?

这里有几个网站,我的研究使我。要么我不理解他们在说什么,要么他们与我的问题并不完全相关。

感谢

回答

2

当您在窗口范围很清楚,你可以用括号标记

$(window).load(function(){  
    bach = {"bdate": 1685, "bplace": "Eisenach, Germany"} 

    $("div").click(function(){ 
    $("#show").text(window[this.id]['bdate']); 
    });  
}); 

阉这是一个好主意,那是另一件事

或火箭的建议Hazmat

var obj = { bach : {"bdate": 1685, "bplace": "Eisenach, Germany"}}; 

$(window).load(function(){  
    $("div").click(function(){ 
     $("#show").text(obj[this.id]['bdate']); 
    });  
}); 
+0

我建议把'bach'放到它自己的对象中:'var obj = {bach: {...}};'然后你可以执行'obj [this.id] .bdate' :-) –

+1

@RocketHazmat - 正在考虑这个,我就是这么做的,所以我添加了它到答案。谢谢 – adeneo

+0

很好,谢谢你们。 – user3179110