2010-11-02 3 views
3

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

Код должен быть как следующий:

var prop = "background-color"; 
switch(val) 
{ 
    case 1: prop = "color"; 
    case 2: prop = "border-color"; 
    // ... 
} 
item.animate({prop: "#00FF00"}, 1000); 

JavaScript жалуется, используя "подпирать" переменной.

Когда я просто говорю

item.animate({"color": "#00FF00"}, 1000); 

все в порядке.

Я думаю, что константа ожидается как объявление свойства объекта.

Как определить его во время выполнения?

ответ

5

Они эквивалентны:

// prop is a literal string here, 
// not a variable 
{prop: "#00FF00"} 

и

{"prop": "#00FF00"} 

вам, вероятно, нужно сделать что-то вроде этого:

var obj = {}; 
obj[prop]="#0000ff"; 
item.animate(obj, 1000); 
2

Да, вы правы, JavaScript ожидает идентификатор как имя свойства в объектном литерале. Вам нужно будет создать объект и назначить свойство, используя квадратную нотацию.

var opts = {}; 
opts[prop] = "#00FF00"; 
item.animate(opts, 1000); 
Смежные вопросы