Usando este script para fazer um objeto de estilo de todos os estilos herdados etc.
var style = css($(this));
alert (style.width);
alert (style.text-align);
com o seguinte, o primeiro alerta funcionará bem, mas o segundo não ... ele está interpretando o -
como um menos, presumo ... o depurador diz 'erro de referência não detectado'. Não posso colocar aspas ao redor, porque não é uma string. Então, como faço para usar essa propriedade de objeto?
javascript
properties
Damon
fonte
fonte
CSS
tag? [Sim, eu sei que já se passaram 7 anos. :)]any js property
porque eu estava tendo um problema em fazer referência a uma propriedade que tinha um hífen (que também era uma propriedade css ... eu não percebi que havia outro problema com o que eu estava tentando fazer). Então é estranho que acaba cobrindo 2 questões diferentes. mas eu diria que a resposta principal explica os dois problemas.Respostas:
EDITAR
Observe os comentários, você verá que, para as propriedades de css, a notação de chave não é compatível com várias propriedades. Usar a notação de chave de caixa de camelo, portanto, é a maneira atual
Use notação chave em vez de ponto
Todos os arrays em js são objetos e todos os objetos são apenas arrays associativos, isso significa que você pode se referir a um local em um objeto da mesma forma que se referiria a uma chave em um array.
ou o objeto
algumas coisas a serem lembradas ao acessar propriedades desta forma
eles são avaliados, então use strings, a menos que você esteja fazendo algo com um contador ou usando nomes de métodos dinâmicos.
isso significa que obj [método] forneceria um erro indefinido, enquanto obj ["método"] não
Você deve usar esta notação se estiver usando caracteres que não são permitidos em variáveis js.
Esta regex resume muito bem
fonte
As propriedades CSS com a
-
são representadas em camelCase em objetos Javascript. Isso seria:Você também pode usar uma notação de colchetes para usar a string:
Os nomes das propriedades podem conter apenas caracteres, números, o
$
sinal conhecido e o_
(graças a pimvdb).fonte
var ò_ó = 'angry';
A resposta à pergunta original é: coloque o nome da propriedade entre aspas e use a indexação de estilo de matriz:
Muitos apontaram que a propriedade em que você está interessado é uma propriedade CSS. As propriedades CSS que possuem hifens são convertidas automaticamente em letras maiúsculas e minúsculas. Nesse caso, você pode usar o nome camel case como:
No entanto, esta solução só funciona para propriedades CSS. Por exemplo,
fonte
Use colchetes:
Mais informações sobre objetos: MDN
NOTA: Se você estiver acessando o objeto de estilo , CSSStyleDeclaration , use o camelCase necessário para acessá-lo a partir do javascript. Mais informações aqui
fonte
ou
fonte
Para responder diretamente à pergunta:
style['text-align']
é como você faria referência a uma propriedade com um hífen. Masstyle.textAlign
(oustyle['textAlign']
) é o que deve ser usado neste caso.fonte
As propriedades de estilo hifenizadas são referenciadas por meio de camelCase em JavaScript , então use
style.textAlign
.fonte
Para resolver seu problema : As propriedades CSS com hífens neles são representadas por propriedades JavaScript em camelCase para evitar esse problema. Você quer:
style.textAlign
.Para responder à pergunta : Use a notação de colchetes :
obj.prop
é o mesmo queobj["prop"]
para que você possa acessar nomes de propriedades usando strings e usar caracteres proibidos em identificadores.fonte
Os nomes das propriedades do objeto não são correspondências um-para-um para os nomes css.
fonte
Eu acho que no caso de estilos CSS eles são alterados para camelCase em Javascript e assim
test-align
se tornatextAlign
. No caso geral em que você deseja acessar uma propriedade que contém caracteres não padrão, você usa o estilo de matriz.['text-align']
fonte
No início, me pergunto por que a solução não funcionou no meu fim
... mais tarde descobrir que acessar atributos de dados é diferente: Deve ser assim:
Espero que isto ajude!
fonte