2013-05-22 6 views
1

Я пытаюсь изменить цвет фона с помощью jQuery. Я создал массив с именами цветов и их значением.undefined объект jQuery, когда он должен быть

Если я

console.log(colorValue); 

Я получаю имя класса я хочу использовать, чтобы найти соответствующий цвет, когда я

console.log(colorArr.colorValue); 

Я получаю неопределенный, но когда я делаю

console.log(colorArr.red); 

Получаю соответствующий цвет:

function colorChange(){ 
    $('div.colorpicker ul li a').on('click', function() { 
     var colorArr = {'greenyellow': '#d2db46', 'lightgreen': '#8dc13f', 'darkgreen': '#56a174', 'blauw' : '#3199d1', 'darkblue':'#326b9b', 'darkpurple':'#584586' , 'purple':'#985494', 'red':'#ca4538', 'orange' : '#e27a37', 'darkyellow': '#f8c040', 'lightyellow': '#e4de42'}; 
     var changeBackground = $('div.header_blue, div.reactie, section#adres, section#referenties_single div.pager'); 
     var changeColor = $('section#tevredenklanten h1, section#referenties_single h2.klant, section#referenties_single .wat_gedaan h2'); 
     var colorValue = $(this).attr('class'); 
     console.log(colorValue); 
     //console.log(colorArr); 
     console.log(colorArr.colorValue); 
     //console.log(colorArr.red); 
     changeBackground.animate({backgroundColor:colorArr.colorValue}, 600); 
    }); 
} 

Кто-нибудь знает, что я должен делать?

+1

'colorArr' не имеет свойство' colorValue', следовательно, не определено. Вероятно, вы хотите попробовать 'colorArr [colorValue]'. –

+0

Возможный дубликат [Имя свойства динамического объекта] (http://stackoverflow.com/questions/4244896/dynamic-object-property-name) – Ryan

+0

Должен держать это в виду как хороший дубликат для каждого вопроса JavaScript. :) – Ryan

ответ

4

Поскольку colorValue не является ключевым объектом, но он содержит ключ, который будет искать вам нужно использовать [] обозначения вместо . обозначения

console.log(colorArr[colorValue]); 

Когда вы говорите colorArr.colorValue он ищет ключ, который называется colorValue в объект colorArr, который не существует, таким образом, она возвращает undefined

1

доступа вашего объекта с помощью квадратных скобок, когда имя свойства хранится в другой переменной:

colorArr[ colorValue ] 

При использовании точечной нотации JavaScript ищет свойство с самым именем «colorValue», которого нет, и, следовательно, возвращает undefined.

0

Try ниже код

colorArr[ colorValue ] 

Мы можем получить доступ к значениям объекта, передавая ключ

colorArr["greenyellow"]= it yields the corresponding result. 
Смежные вопросы