2014-03-16 3 views
0

У меня есть объект, который выглядит следующим образом:Добавить данные конкретного свойства объекта с индексом

imgs: { 
    img1: { 
     on: 0, 
     scr: null 
    }, 
    img2: { 
     on: 0, 
     scr: null 
    }, 
    and so on... 
} 

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

ЯШ:

MoveUpImg: function(index) { 

    Capsule.imgs['img' + index].on = 1; 

    // rest of the code 
}, 

Этот код не работает:

Uncaught TypeError: Cannot set property 'on' of undefined 

Изменяя к конкретному свойству объекта, скажем, img2 это работает:

Capsule.imgs.img2.on = 1; 

... это означает, что это что-то с этой линией, это проблема:

Capsule.imgs['img' + index].on = 1; 

(конечно, я проверил, что индекс дает мне правильный номер и так далее)

+0

Лучшая догадка - с массивом – blgt

+0

@blgt: Конечно, это было бы возможно, но я хочу использовать объект по нескольким причинам. – holyredbeard

+0

Что происходит, вы говорите, что это «не работает»? Как 'imgs' связано с' MoveUpImg' w.r.t. код, оба они содержатся в одном и том же пространстве имен? Можете ли вы создать упрощенную jsFiddle вашей проблемы? – Xotic750

ответ

1

Вы передаете img функционировать, но пытаются получить доступ к объекту imgs

Должно быть

MoveUpImg: function(imgs, index) { 

вместо

MoveUpImg: function(img, index) { 
+0

Я не совсем понял эту часть. 'img', который передается функции, является совершенно другой переменной, которая используется для некоторого другого кода в функции. Однако объект «imgs» доступен глобально внутри js-кода (я использую литерал объекта). – holyredbeard

+0

Затем должна возникнуть проблема вокруг 'Capsule.imgs ['img' ...', другие коды в порядке http://jsfiddle.net/824Ge/1/ –

+0

Что получится, если вы поместите 'Capsule.imgs [ 'img1']. on = 1; '? –

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