Utilisation de ce script pour créer un objet de style de tous les styles hérités etc.
var style = css($(this));
alert (style.width);
alert (style.text-align);
avec ce qui suit, la première alerte fonctionnera bien, mais la seconde ne fonctionnera pas ... elle interprète le -
comme un moins je suppose ... le débogueur dit «erreur de référence non interceptée». Cependant, je ne peux pas mettre de guillemets autour, car ce n'est pas une chaîne. Alors, comment utiliser cette propriété d'objet?
javascript
properties
Damon
la source
la source
CSS
balise? [Oui, je sais que ça fait 7 ans. :)]any js property
parce que j'avais un problème avec le référencement d'une propriété contenant un trait d'union (qui se trouvait également être une propriété css ... je ne savais pas qu'il y avait un autre problème avec ce que j'essayais de faire). C'est donc un problème étrange qui finit par couvrir 2 problèmes différents. mais je dirais que la première réponse explique les deux problèmes.Réponses:
ÉDITER
Regardez les commentaires, vous verrez que pour les propriétés css, la notation par clé n'est pas compatible avec un certain nombre de propriétés. L'utilisation de la notation clé en cas de chameau est donc la méthode actuelle
Utilisez la notation clé plutôt que le point
Tous les tableaux de js sont des objets et tous les objets ne sont que des tableaux associatifs, ce qui signifie que vous pouvez faire référence à un endroit dans un objet comme vous le feriez pour une clé dans un tableau.
ou l'objet
quelques points à retenir lors de l'accès aux propriétés de cette façon
ils sont évalués donc utilisez des chaînes sauf si vous faites quelque chose avec un compteur ou en utilisant des noms de méthodes dynamiques.
cela signifie que obj [méthode] vous donnerait une erreur non définie alors que obj ["méthode"] ne le ferait pas
Vous devez utiliser cette notation si vous utilisez des caractères qui ne sont pas autorisés dans les variables js.
Cette regex résume à peu près tout
la source
Les propriétés CSS avec un
-
sont représentées dans camelCase dans les objets Javascript. Ce serait:Vous pouvez également utiliser une notation entre crochets pour utiliser la chaîne:
Les noms de propriétés ne peuvent contenir que des caractères, des chiffres, le
$
signe bien connu et le_
(merci à pimvdb).la source
var ò_ó = 'angry';
La réponse à la question d'origine est: placez le nom de la propriété entre guillemets et utilisez l'indexation de style tableau:
Plusieurs ont souligné que la propriété qui vous intéresse est une propriété CSS. Les propriétés CSS qui ont des traits d'union sont automatiquement converties en boîtier camel. Dans ce cas, vous pouvez utiliser le nom en boîtier de chameau comme:
Cependant, cette solution ne fonctionne que pour les propriétés CSS. Par exemple,
la source
Utilisez des crochets:
Plus d'infos sur les objets: MDN
REMARQUE: Si vous accédez à l' objet de style , CSSStyleDeclaration , utilisez must camelCase pour y accéder à partir de javascript. Plus d'infos ici
la source
ou
la source
Pour répondre directement à la question:
style['text-align']
comment référencer une propriété avec un trait d'union. Maisstyle.textAlign
(oustyle['textAlign']
) est ce qui devrait être utilisé dans ce cas.la source
Les propriétés de style avec trait d'union sont référencées via camelCase en JavaScript , donc utilisez
style.textAlign
.la source
Pour résoudre votre problème : Les propriétés CSS contenant des traits d'union sont représentées par des propriétés JavaScript dans camelCase pour éviter ce problème. Vous voulez:
style.textAlign
.Pour répondre à la question : Utilisez la notation entre crochets :
obj.prop
est la même chose queobj["prop"]
si vous pouvez accéder aux noms de propriétés à l'aide de chaînes et utiliser des caractères interdits dans les identificateurs.la source
Les noms de propriété d'objet ne correspondent pas un à un pour les noms css.
la source
Je pense que dans le cas des styles CSS , ils sont changés à camelCase en Javascript donc
test-align
devienttextAlign
. Dans le cas général où vous souhaitez accéder à une propriété contenant des caractères non standard, vous utilisez le style tableau.['text-align']
la source
Au début, je me demande pourquoi la solution n'a pas fonctionné de mon côté
... plus tard, découvrez que l'accès aux attributs de données est différent: cela devrait ressembler à ceci:
J'espère que cela t'aides!
la source