Usando este script para hacer un objeto de estilo de todos los estilos heredados, etc.
var style = css($(this));
alert (style.width);
alert (style.text-align);
con lo siguiente, la primera alerta funcionará bien, pero la segunda no ... se está interpretando -
como un signo menos, supongo ... el depurador dice "error de referencia no detectado". Sin embargo, no puedo ponerlo entre comillas porque no es una cadena. Entonces, ¿cómo uso esta propiedad de objeto?
javascript
properties
Damon
fuente
fuente
CSS
etiqueta? [Sí, sé que han pasado 7 años. :)]any js property
que estaba teniendo un problema al hacer referencia a una propiedad que tenía un guión (que también resultó ser una propiedad css ... no me di cuenta de que había otro problema con lo que estaba tratando de hacer). Entonces es extraño que termina cubriendo 2 temas diferentes. pero diría que la respuesta principal explica ambos problemas.Respuestas:
EDITAR
Mire los comentarios y verá que para las propiedades de CSS, la notación de claves no es compatible con varias propiedades. El uso de la notación de clave de caso camel, por lo tanto, es la forma actual
Use notación clave en lugar de punto
Todas las matrices en js son objetos y todos los objetos son simplemente matrices asociativas, esto significa que puede referirse a un lugar en un objeto como lo haría con una clave en una matriz.
o el objeto
un par de cosas para recordar al acceder a las propiedades de esta manera
se evalúan, así que use cadenas a menos que esté haciendo algo con un contador o usando nombres de métodos dinámicos.
esto significa que obj [método] le daría un error indefinido mientras que obj ["método"] no
Debe usar esta notación si está usando caracteres que no están permitidos en las variables js.
Esta expresión regular lo resume bastante bien
fuente
Las propiedades CSS con una
-
se representan en camelCase en objetos Javascript. Eso sería:También puede usar una notación entre corchetes para usar la cadena:
Los nombres de las propiedades solo pueden contener caracteres, números, el
$
signo conocido y el_
(gracias a pimvdb).fuente
var ò_ó = 'angry';
La respuesta a la pregunta original es: coloque el nombre de la propiedad entre comillas y use la indexación de estilo de matriz:
Varios han señalado que la propiedad que le interesa es una propiedad CSS. Las propiedades CSS que tienen guiones se convierten automáticamente a carcasa de camello. En ese caso, puede usar el nombre en mayúsculas de camello como:
Sin embargo, esta solución solo funciona para propiedades CSS. Por ejemplo,
fuente
Utilice corchetes:
Más información sobre objetos: MDN
NOTA: Si está accediendo al objeto de estilo , CSSStyleDeclaration , use must camelCase para acceder a él desde javascript. Más info aquí
fuente
o
fuente
Para responder directamente a la pregunta:
style['text-align']
es cómo se haría referencia a una propiedad con un guión. Perostyle.textAlign
(ostyle['textAlign']
) es lo que debería usarse en este caso.fuente
Las propiedades de estilo con guiones se referencian a través de camelCase en JavaScript , así que use
style.textAlign
.fuente
Para resolver su problema : Las propiedades CSS con guiones están representadas por propiedades JavaScript en camelCase para evitar este problema. Que desea:
style.textAlign
.Para responder a la pregunta : Use la notación de corchetes :
obj.prop
es lo mismo queobj["prop"]
para que pueda acceder a los nombres de las propiedades usando cadenas y use caracteres que están prohibidos en los identificadores.fuente
Los nombres de propiedad del objeto no son coincidencias uno a uno para los nombres css.
fuente
Creo que en el caso de los estilos CSS, se cambian a camelCase en Javascript, por lo que se
test-align
conviertetextAlign
. En el caso general en el que desea acceder a una propiedad que contiene caracteres no estándar, utiliza el estilo de matriz.['text-align']
fuente
Al principio, me pregunto por qué la solución no funcionó por mi parte
... más adelante, descubra que acceder a los atributos de datos es diferente: debería ser así:
¡Espero que esto ayude!
fuente