2013-04-03 2 views
1

У меня есть contents объект и внутри, что у меня есть некоторые данные. То, что я делаю, я сначала захватываю имя класса тега div, а затем на основе этого имени класса я хочу захватить данные из содержимого на основе этого класса. Вот мой коддобавление содержимого к элементам DOM из объекта

var contents = { 
    inner_one: { 
     title: 'This is title for one', 
     body: 'This is body for one' 
    }, 
    inner_two: { 
     title: 'This is title for two', 
     body: 'This is body for two' 
    } 
}; 

var inner = $(div).attr('class'); //here lets say inner = inner_one 

console.log(contents.inner); 

Но мой код выше не работает. Я предполагаю, что мой код ищет inner объект внутри contents, которого не существует. Есть ли другой способ сделать эту работу?

ответ

3

Для того, чтобы иметь доступ собственности на динамический объект, мы должны использовать кронштейн обозначения.

console.log(contents[ inner ]); 

Следовательно, мы не можем получить доступ к динамически именам свойств с помощью точечной нотации.

2

Вы можете использовать индекс [] и передать variable, содержащие имя атрибута, чтобы получить значение property.

Изменить

console.log(contents.inner); 

Для

console.log(contents[inner]); 
+1

Почему это работает, если вы могли бы объяснить это немного, что очень полезно для всех здесь. – Jai

+0

Я сказал использовать индексатор, это путь доступа к объекту объекта. – Adil

+0

Причина голосования? – Adil

0

Вы должны проанализировать вашу строку JSON первой,

var obj = $.parseJSON(contents); 

попробуйте console.log

console.log(obj[inner]); 

Но сначала проверьте правильность строки json.

+0

Содержимое не является строкой JSON, это простой объект – slebetman

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