Verwenden dieses Skripts , um ein Stilobjekt aller geerbten Stile usw. zu erstellen.
var style = css($(this));
alert (style.width);
alert (style.text-align);
Mit der folgenden Funktion funktioniert die erste Warnung einwandfrei, die zweite jedoch nicht. -
Ich nehme an, sie interpretiert das als Minus. Der Debugger sagt "nicht erfasster Referenzfehler". Ich kann es jedoch nicht in Anführungszeichen setzen, da es sich nicht um eine Zeichenfolge handelt. Wie verwende ich diese Objekteigenschaft?
javascript
properties
Damon
quelle
quelle
CSS
Tags angezeigt ? [Ja, ich weiß, es sind 7 Jahre vergangen. :)]any js property
weil ich ein Problem mit der Referenzierung einer Eigenschaft hatte, die einen Bindestrich enthielt (was auch eine CSS-Eigenschaft war ... ich wusste nicht, dass es ein anderes Problem mit dem gab, was ich versuchte). Es ist also eine seltsame Sache, die am Ende zwei verschiedene Themen abdeckt. Aber ich würde sagen, die Top-Antwort erklärt beide Probleme.Antworten:
BEARBEITEN
In den Kommentaren sehen Sie, dass die Notation für CSS-Eigenschaften mit einer Reihe von Eigenschaften nicht kompatibel ist. Die Verwendung der Notation des Kamelkastens ist daher der derzeitige Weg
Verwenden Sie die Tastenschreibweise anstelle des Punkts
Alle Arrays in js sind Objekte und alle Objekte sind nur assoziative Arrays. Dies bedeutet, dass Sie auf eine Stelle in einem Objekt genauso verweisen können wie auf einen Schlüssel in einem Array.
oder das Objekt
Ein paar Dinge, die Sie beachten sollten, wenn Sie auf diese Weise auf Eigenschaften zugreifen
Sie werden ausgewertet. Verwenden Sie daher Zeichenfolgen, es sei denn, Sie tun etwas mit einem Zähler oder verwenden dynamische Methodennamen.
Dies bedeutet, dass obj [Methode] Ihnen einen undefinierten Fehler geben würde, während obj ["Methode"] dies nicht tun würde
Sie müssen diese Notation verwenden, wenn Sie Zeichen verwenden, die in js-Variablen nicht zulässig sind.
Diese Regex fasst es ziemlich gut zusammen
quelle
CSS-Eigenschaften mit a
-
werden in camelCase in Javascript-Objekten dargestellt. Das wäre:Sie können auch eine Klammernotation verwenden, um die Zeichenfolge zu verwenden:
Eigenschaftsnamen dürfen nur Zeichen, Zahlen, das bekannte
$
Zeichen und das_
(dank pimvdb) enthalten.quelle
var ò_ó = 'angry';
Die Antwort auf die ursprüngliche Frage lautet: Setzen Sie den Eigenschaftsnamen in Anführungszeichen und verwenden Sie die Indexierung im Array-Stil:
Einige haben darauf hingewiesen, dass die Eigenschaft, an der Sie interessiert sind, eine CSS-Eigenschaft ist. CSS-Eigenschaften mit Bindestrichen werden automatisch in Kamelhüllen konvertiert. In diesem Fall können Sie den Namen in Kamelhülle wie folgt verwenden:
Diese Lösung funktioniert jedoch nur für CSS-Eigenschaften. Beispielsweise,
quelle
Verwenden Sie Klammern:
Weitere Infos zu Objekten: MDN
HINWEIS: Wenn Sie die zugreifen Stil Objekt, CSSStyleDeclaration , Camelcase verwenden müssen , um Zugriff es von Javascript. Mehr Infos hier
quelle
oder
quelle
Um die Frage direkt zu beantworten:
style['text-align']
So würden Sie auf eine Eigenschaft mit einem Bindestrich verweisen. Aberstyle.textAlign
(oderstyle['textAlign']
) sollte in diesem Fall verwendet werden.quelle
Stilmerkmale mit Bindestrich werden in JavaScript über camelCase referenziert. Verwenden Sie daher
style.textAlign
.quelle
So lösen Sie Ihr Problem : Die CSS-Eigenschaften mit Bindestrichen werden in camelCase durch JavaScript-Eigenschaften dargestellt , um dieses Problem zu vermeiden. Sie wollen :
style.textAlign
.So beantworten Sie die Frage : Verwenden Sie die eckige Klammer : Dies
obj.prop
ist dasselbe,obj["prop"]
damit Sie mithilfe von Zeichenfolgen auf Eigenschaftsnamen zugreifen und Zeichen verwenden können, die in Bezeichnern verboten sind.quelle
Die Objekteigenschaftsnamen stimmen nicht eins zu eins mit den CSS-Namen überein.
quelle
Ich denke , im Fall von CSS - Stilen sie in Camelcase Javascript erhalten geändert , so
test-align
wirdtextAlign
. Im allgemeinen Fall, in dem Sie auf eine Eigenschaft zugreifen möchten, die nicht standardmäßige Zeichen enthält, verwenden Sie den Array-Stil.['text-align']
quelle
Zuerst frage ich mich, warum die Lösung an meinem Ende nicht funktioniert hat
... später herausfinden, dass der Zugriff auf Datenattribute anders ist: Es sollte so sein:
Hoffe das hilft!
quelle