Используйте строковую переменную в качестве полей объекта - PullRequest
3 голосов
/ 02 ноября 2010

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

Код должен выглядеть следующим образом:

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

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

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

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

все хорошо.

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

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

Ответы [ 2 ]

5 голосов
/ 02 ноября 2010

Это эквивалентно:

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

и

{"prop": "#00FF00"}

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

var obj = {};
obj[prop]="#0000ff";
item.animate( obj, 1000 );
2 голосов
/ 02 ноября 2010

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

var opts = {};
opts[prop] = "#00FF00";
item.animate(opts, 1000);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...