2014-01-09 8 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

Смежные вопросы