Использование этого скрипта для создания объекта стиля из всех унаследованных стилей и т. Д.
var style = css($(this));
alert (style.width);
alert (style.text-align);
со следующим, первое предупреждение будет работать нормально, а второе - нет ... оно интерпретирует -
как минус, я полагаю ... отладчик говорит "ошибка неперехваченной ссылки". Однако я не могу заключить его в кавычки, потому что это не строка. Итак, как мне использовать это свойство объекта?
javascript
properties
Дэймон
источник
источник
CSS
тега? [Да, я знаю, что прошло 7 лет. :)]any js property
потому что у меня возникла проблема со ссылкой на свойство, в котором был дефис (который также оказался свойством css ... я не осознавал, что есть еще одна проблема с тем, что я пытался сделать). Так что это странный вопрос, который в конечном итоге затрагивает две разные проблемы. но я бы сказал, что главный ответ объясняет обе проблемы.Ответы:
РЕДАКТИРОВАТЬ
Посмотрите на комментарии, и вы увидите, что для свойств css обозначение ключей несовместимо с рядом свойств. Следовательно, использование ключевой нотации верблюжьего регистра является текущим способом
Используйте обозначение клавиш, а не точку
Все массивы в js являются объектами, а все объекты - просто ассоциативными массивами, это означает, что вы можете ссылаться на место в объекте так же, как если бы вы ссылались на ключ в массиве.
или объект
пара вещей, которые следует помнить при доступе к свойствам таким образом
они оцениваются, поэтому используйте строки, если вы не делаете что-то со счетчиком или не используете имена динамических методов.
это означает, что obj [method] выдаст вам неопределенную ошибку, а obj ["method"] - нет.
Вы должны использовать эту нотацию, если используете символы, недопустимые в переменных js.
Это регулярное выражение в значительной степени подводит итог
источник
Свойства CSS с
-
символом a представлены в camelCase в объектах Javascript. Это было бы:Вы также можете использовать обозначение скобок для использования строки:
Имена свойств могут содержать только символы, числа, общеизвестный
$
знак и_
(спасибо pimvdb).источник
var ò_ó = 'angry';
Ответ на исходный вопрос: поместите имя свойства в кавычки и используйте индексацию стиля массива:
Некоторые отметили, что интересующее вас свойство является свойством CSS. Свойства CSS с дефисами автоматически преобразуются в верблюжий регистр. В этом случае вы можете использовать имя в верблюжьем регистре, например:
Однако это решение работает только для свойств CSS. Например,
источник
Используйте скобки:
Подробнее об объектах: MDN
ПРИМЕЧАНИЕ. Если вы обращаетесь к объекту стиля CSSStyleDeclaration , используйте must camelCase для доступа к нему из javascript. Больше информации здесь
источник
или
источник
Чтобы напрямую ответить на вопрос:
style['text-align']
как бы вы могли ссылаться на свойство с дефисом в нем. Ноstyle.textAlign
(илиstyle['textAlign']
) - вот что следует использовать в этом случае.источник
На свойства стиля с переносом через дефис в JavaScript ссылаются через camelCase , поэтому используйте
style.textAlign
.источник
Чтобы решить вашу проблему : чтобы избежать этой проблемы, свойства CSS с дефисами в них представлены свойствами JavaScript в camelCase . Вы хотите:
style.textAlign
.Чтобы ответить на вопрос : Используйте запись в квадратных скобках :
obj.prop
то же самое, чтоobj["prop"]
и для доступа к именам свойств, используя строки и символы, запрещенные в идентификаторах.источник
Имена свойств объекта не совпадают однозначно с именами css.
источник
Я думаю, что в случае стилей CSS они меняются на camelCase в Javascript, так что
test-align
становитсяtextAlign
. В общем случае, когда вы хотите получить доступ к свойству, содержащему нестандартные символы, вы используете стиль массива.['text-align']
источник
Сначала мне интересно, почему решение не сработало с моей стороны
... позже выясним, что доступ к атрибутам данных отличается: он должен быть таким:
Надеюсь это поможет!
источник