2014-11-20 5 views
0

У меня есть функция, которая используется для редактирования css определенного элемента. Элемент выбирается через JQuery, а сохраненные значения для css извлекаются из 2D-массива. Однако, когда я устанавливаю styles в код, он принимает prop буквально как "prop", а не как его строковое значение. В отладчике я вижу, что prop действительно имеет действительное строковое значение, но это не происходит при установке styles. Я понимаю, что это, вероятно, синтаксическая проблема.Javascript неправильно обрабатывает переменную буквально

function foo(selector) { 

    var element = $(selector); 

    for (var prop in stylesOld[selector]) { //stylesOld is a 2D array using key/value pairs 
     if (stylesOld[selector].hasOwnProperty(prop)) { 

      // here lies the problem 
      var styles = { prop : stylesOld[selector][prop]}; 

      element.css(styles); 
     } 
    } 
} 

Я попытался использовать prop.toString(), но это возвращает ошибку. Заранее спасибо.

+2

зачем с дополнительной переменной 'styles' вы пробовали просто делать' element.css (пропеллер, stylesOld [селектор] [проп]) '? – scrappedcola

+0

У меня сейчас: D Приветствия! –

ответ

3

Литеральный синтаксис объекта Javascript поддерживает только буквенные ключи. Если вы хотите, переменные ключи, вы должны присвоить значения по отдельности, а:

var styles = {}; 
styles[prop] = stylesOld[selector][prop]; 
+0

Это именно то, что мне нужно. благодаря –

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