2013-06-23 6 views
-2

У меня есть объект, как этоткак расчесывание имя переменной со строкой

var obj = { 
    option1 : { 
    title : "string", 
    options : {} 
    }, 
    option2 : { 
    title : "string", 
    options : {} 
    }, 
    option3 : { 
    title : "string", 
    options : {} 
    }, 
    option4 : { 
    title : "string", 
    options : {} 
    } 
} 

Я пытаюсь получить заголовок на основе индекса HTML узла

$("#id div").each(function(){ 
    $(this).html(obj.["option" + ($(this).index() + 1)].title); 
}) 

ответ

2
$(this).html(obj.["option" + ($(this).index() + 1)].title); 
//   ^Get rid of this 

Так что вы хотите это :

$(this).html(obj["option" + ($(this).index() + 1)].title); 

Синтаксис квадратной скобки альтернативный для синтаксиса точки. Вы используете тот или иной, а не тот и другой. Грамматику для call expressions в спецификации показывает, что это ясно:

значение вложенного ВыраженияCall:
        Аргументы
        Аргументы значение вложенного ВыраженияCall
        [ значение вложенного ВыраженияCall Expression]
        . значение вложенного ВыраженияCall ИмяИдентификатора

+0

Большое спасибо она решена :) –

+0

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

+1

@CameronA - я не голосовал, но я думаю, что причина для downvotes по этому вопросу, вы могли бы легко справиться с этим. У вас будет ошибка в консоли, что-то вроде «Неожиданный токен [», который дал бы вам большой ключ к вопросу о том, где возникла проблема. Но в любом случае, пожалуйста, я рад, что смогу помочь :) –