Unterschied zwischen externer und interner CSS-Definition
CCarter
- css
Hallo,
ich habe hier das erste Mal ein mir völlig unverständliches Verhalten von CSS, bzw. JavaScript. Vielleicht wäre das Thema auch besser in der Kategorie Javascript aufgehoben, aber ich versuchs mal so.
Wenn ich über Javascript auf Style-Elemente eines Objekts zugreifen möchte, diese also auslese, klappt das plötzlich nur noch, wenn das CSS direkt im Tag über 'style' definiert wurde, nicht mehr über 'id' und ein externes StyleSheet. Das Merkwürdige ist aber, dass das CSS vom Browser interpretiert und auch angewandt wird, nur JavaScript hat keinen Zugriff mehr darauf. Abfragen werden mit 'null' beantwortet.
Vielleicht kommt jemandem das bekannt vor und hat einen Vorschlag.
Gruss
CCarter
Hi,
Wenn ich über Javascript auf Style-Elemente eines Objekts zugreifen möchte, diese also auslese, klappt das plötzlich nur noch, wenn das CSS direkt im Tag über 'style' definiert wurde, nicht mehr über 'id' und ein externes StyleSheet.
das liegt daran, dass nur die direkte, auf diese eine Node bezogene Veränderung des Styles im style-Objekt der Node auftaucht. Alles andere ist Teil anderer Objekte, auch wenn es sich auf die Darstellung auf der Node auswirkt.
Vielleicht kommt jemandem das bekannt vor und hat einen Vorschlag.
Hast Du im Archiv danach gesucht?
Cheatah
Wenn ich über Javascript auf Style-Elemente eines Objekts zugreifen möchte, diese also auslese, klappt das plötzlich nur noch, wenn das CSS direkt im Tag über 'style' definiert wurde, nicht mehr über 'id' und ein externes StyleSheet.
das liegt daran, dass nur die direkte, auf diese eine Node bezogene Veränderung des Styles im style-Objekt der Node auftaucht. Alles andere ist Teil anderer Objekte, auch wenn es sich auf die Darstellung auf der Node auswirkt.
Vielleicht kommt jemandem das bekannt vor und hat einen Vorschlag.
Hast Du im Archiv danach gesucht?
Ja, hab ich. Aber für die richtige Antwort, braucht man leider auch immer die richtige Frage. Bisher habe ich da nichts Passendes herausfiltern können. Hast du evtl. einen Link auf eine ausführlichere Beschreibung des Unterschieds. Ich möchte gern verstehen, was ich tue.
Gruss
CCarter
Hi CCarter,
Ja, hab ich. Aber für die richtige Antwort, braucht man leider auch immer die richtige Frage. Bisher habe ich da nichts Passendes herausfiltern können. Hast du evtl. einen Link auf eine ausführlichere Beschreibung des Unterschieds. Ich möchte gern verstehen, was ich tue.
ich verstehe die konkrete Problematik nur ansatzweise, aber Cheatahs Hinweis deute ich so, daß Du einfach an der falschen Stelle im DOM-Baum suchst: Das Objekt, welches Du liest, besitzt die Eigenschaften, die Du suchst, gar nicht selbst, sondern es erbt sie von anderen Objekten - was ein dynamischer Prozeß (der Interpretation durch den Browser) ist, der sich nicht statisch im DOM-Knoten selbst manifestiert.
Woraus ich schließen würde, daß Du in diesen anderen Objekten nachsehen mußt. Um zu sagen, ob Du Deinem Knoten ansehen kannst, welche anderen Objekte in Frage kommen, reichen meine DOM-Kenntnisse nicht aus; meine CSS-Kenntnisse lassen aber vermuten, daß es eine unüberschaubare Menge von Möglichkeiten geben könnte, woher ein Knoten seine Darstellungseigenschaften geerbt haben könnte. Im Klartext: Ich fürchte, Du mußt "aktiv wissen", daß Du für die CSS-Formatierung eine ID verwendet hast, und mit dieser das entsprechende Objekt adressieren.
Viele Grüße
Michael
Hi,
meine CSS-Kenntnisse lassen aber vermuten, daß es eine unüberschaubare Menge von Möglichkeiten geben könnte, woher ein Knoten seine Darstellungseigenschaften geerbt haben könnte.
ja. Das Objekt selbst, alle Vatergenerationen, sowie beliebig viele separat stehende Selektoren hinreichend tiefgehender Komplexität, allen voran (und wohl am einfachsten) das Element, dessen ID oder eine eventuell vorhandene Klasse.
Im Klartext: Ich fürchte, Du mußt "aktiv wissen", daß Du für die CSS-Formatierung eine ID verwendet hast, und mit dieser das entsprechende Objekt adressieren.
Bzw. dies ermitteln. Wobei ich mich gerade frage, wozu es nötig ist, die aktuellen Werte von CSS-Eigenschaften einer Node auszulesen.
Cheatah
meine CSS-Kenntnisse lassen aber vermuten, daß es eine unüberschaubare Menge von Möglichkeiten geben könnte, woher ein Knoten seine Darstellungseigenschaften geerbt haben könnte.
ja. Das Objekt selbst, alle Vatergenerationen, sowie beliebig viele separat stehende Selektoren hinreichend tiefgehender Komplexität, allen voran (und wohl am einfachsten) das Element, dessen ID oder eine eventuell vorhandene Klasse.
Im Klartext: Ich fürchte, Du mußt "aktiv wissen", daß Du für die CSS-Formatierung eine ID verwendet hast, und mit dieser das entsprechende Objekt adressieren.
Bzw. dies ermitteln. Wobei ich mich gerade frage, wozu es nötig ist, die aktuellen Werte von CSS-Eigenschaften einer Node auszulesen.
Ich denke ich habs verstanden. Bei einer CSS-Definition direkt im Tag, wird das entsprechende Element direkt mit den CSS-Eigenschaften versehen. Bei einer externen Definition erhält es nur quasi einen Link auf die Eigenschaften des zentralen Formats. Also muss ich letztere selbst ansprechen um den gewünschten Effekt zu erreichen, wobei ich damit aber auch gleichzeitig alle anderen Objekte beeinflusse die sich ihre Werte aus dem Format holen. Soweit richtig?
Dann mache ich mich mal auf die Suche nach der korrekten Position (www.w3c.org).
Danke und Gruss
CCarter
Hi,
Ich denke ich habs verstanden. Bei einer CSS-Definition direkt im Tag, wird das entsprechende Element direkt mit den CSS-Eigenschaften versehen.
ja, denn es handelt sich "quasi" um den selben Vorgang wie beim Setzen der Eigenschaft mittels JavaScript.
Bei einer externen Definition
Ob extern oder nicht ist unerheblich. Bei einer nicht direkt die Node betreffenden Definition.
erhält es nur quasi einen Link auf die Eigenschaften des zentralen Formats.
Findet der Browser durch sehr komplexe Mechanismen heraus, welchen Wert eine Eigenschaft der Node hat. Es gibt keine Referenz auf irgendwas.
Also muss ich letztere selbst ansprechen um den gewünschten Effekt zu erreichen, wobei ich damit aber auch gleichzeitig alle anderen Objekte beeinflusse die sich ihre Werte aus dem Format holen. Soweit richtig?
Änderungen an einer nicht nodebezogenen CSS-Manipulation wirken sich auf alle jene Nodes aus, auf die der Selektor passt.
Dann mache ich mich mal auf die Suche nach der korrekten Position (www.w3c.org).
Viel Erfolg!
Cheatah
Hallo,
Änderungen an einer nicht nodebezogenen CSS-Manipulation wirken sich auf alle jene Nodes aus, auf die der Selektor passt.
Genau darüber habe ich gerade nachgedacht. Bist du dir sicher, das die Änderungen unmittelbar geschehen?
Viel Erfolg!
Danke, das Ganze scheint ein Stück komplexer zu sein, als ich mir das vorgestellt habe, aber irgendwie muss man ja drankommen.
Gruss
CCarter
Hi,
Genau darüber habe ich gerade nachgedacht. Bist du dir sicher, das die Änderungen unmittelbar geschehen?
nein, wie sollte ich? Es gibt Browser, die überhaupt kein CSS beherrschen, oder nur billigen Abklatsch davon, und oft auch nur grottenschlecht. Wieso sollte ich da sicher sein, dass bei komplexen Vorgängen das passiert, was idealerweise passieren sollte?
Danke, das Ganze scheint ein Stück komplexer zu sein, als ich mir das vorgestellt habe, aber irgendwie muss man ja drankommen.
Bedenke, dass auch Selektoren wie der Folgende existieren:
html:lang(en) > *:not([lang]) div:first-child + p[title]:before
Mozilla sollte das alles beherrschen ... für einen IE sind das natürlich böhmische Dörfer ;-)
Cheatah
Hi,
Genau darüber habe ich gerade nachgedacht. Bist du dir sicher, das die Änderungen unmittelbar geschehen?
nein, wie sollte ich? Es gibt Browser, die überhaupt kein CSS beherrschen, oder nur billigen Abklatsch davon, und oft auch nur grottenschlecht. Wieso sollte ich da sicher sein, dass bei komplexen Vorgängen das passiert, was idealerweise passieren sollte?
Das ist schon klar, aber Standard ist es also schon. Das beruhigt mich. Ich habe so das Gefühl als bin ich auf der richtigen Spur...
Danke, das Ganze scheint ein Stück komplexer zu sein, als ich mir das vorgestellt habe, aber irgendwie muss man ja drankommen.
Bedenke, dass auch Selektoren wie der Folgende existieren:
html:lang(en) > *:not([lang]) div:first-child + p[title]:before
Mozilla sollte das alles beherrschen ... für einen IE sind das natürlich böhmische Dörfer ;-)
Gott sei Dank, sonst wären wir dem IE ja ohne einfache Work-Arounds ausgeliefert. :)
Gruss
CCarter
Hi,
Bist du dir sicher, das die Änderungen unmittelbar geschehen?
[...]
Das ist schon klar, aber Standard ist es also schon.
sagen wir so: CSS ist nicht verantwortlich dafür, was andere Stellen wie z.B. JavaScript damit machen. DOM bietet Schnittstellen an, die zu einer Änderung dienen - was nur Sinn macht, wenn diese dann auch durchgeführt wird.
Cheatah
Hi,
Bist du dir sicher, das die Änderungen unmittelbar geschehen?
[...]»» »» Das ist schon klar, aber Standard ist es also schon.
sagen wir so: CSS ist nicht verantwortlich dafür, was andere Stellen wie z.B. JavaScript damit machen. DOM bietet Schnittstellen an, die zu einer Änderung dienen - was nur Sinn macht, wenn diese dann auch durchgeführt wird.
Ja, ich habe auch noch das dazu gefunden:
"DOM sieht vor, das alle CSS Elemente "live" sein müssen, d.h. eine Änderung des StyleSheets bewirkt eine sofortige Änderung der Dokumentansicht."
Mir ist jetzt auch klar, das ich nach DOM 2 über StyleSheet, bzw. CSSStyleSheet auf alle StyleSheets des Dokuments zu greifen kann. Allerdings hänge ich irgendwie mit der Umsetzung. Ist es auf dem aktuellen Stand der Browser überhaupt möglich mit normalen JavaScript auf diese DOM-Struktur zuzugreifen?
Aber zur Erläuterung jetzt endlich mal was ich praktisch vorhabe. Ich kann in meinem Fall leider nicht auf dem üblichen Weg auf CSS-Eigenschaften zugreifen, sondern muss mich über
obj = document.getElementById("objectName");
obj = obj["style"];
obj = obj["top"];
rantasten. Das klappt halt nur solange ich die CSS-Definition direkt im Tag vornehme. Warum habe ich ja inzwischen begriffen.
Gruss
CCarter
Hi,
Ist es auf dem aktuellen Stand der Browser überhaupt möglich mit normalen JavaScript auf diese DOM-Struktur zuzugreifen?
diese Frage hängt unmittelbar von der Definition des "aktuellen Stands der Browser" ab. Ich zähle Netscape 4 dazu, dessen DOM-Fähigkeiten, ähm, nicht existent sind.
Das klappt halt nur solange ich die CSS-Definition direkt im Tag vornehme.
Schreibe Dir eine Klasse, die Dir ein Style-Objekt erzeugt, welches auch zumindest einfachere CSS-Selektoren beachtet; insbesondere Classname und Elementname sollten sich verhältnismäßig leicht implementieren lassen.
Cheatah
Hi CCarter,
Bei einer externen Definition erhält es nur quasi einen Link auf die Eigenschaften des zentralen Formats.
eben nicht. Und genau das ist Dein Problem: Stünde in der Node wirklich drin, wer für die Ausprägung eines konkreten Attributs zuständig war, dann könntest Du von Deiner Node aus das Problem lösen (mit einem nur unwesentlich anderen Ansatz als dem, den Du versucht hast).
Genau diesen Link setzt aber niemand - deshalb mußt Du "raten", wer es war.
Viele Grüße
Michael
Hallo,
Hi CCarter,
Bei einer externen Definition erhält es nur quasi einen Link auf die Eigenschaften des zentralen Formats.
eben nicht. Und genau das ist Dein Problem: Stünde in der Node wirklich drin, wer für die Ausprägung eines konkreten Attributs zuständig war, dann könntest Du von Deiner Node aus das Problem lösen (mit einem nur unwesentlich anderen Ansatz als dem, den Du versucht hast).
Genau diesen Link setzt aber niemand - deshalb mußt Du "raten", wer es war.
ok, das heißt wenn der Browser die Seite liest, geht er alle HTML-Elemente durch und guckt ob er im StyleSheet einen passenden Selektor findet. Hat er ihn, behandelt er das Element entsprechend, speichert aber weder die CSS-Eigenschaften selbst, noch einen Link auf den gefundenen Selektor im Element. D.h. doch aber, dass wenn ich das zentrale Format ändere, sich gar keine Auswirkungen an den darüber konfigurierten Elementen ergibt, bis der Browser die Suche erneut durchführt, oder? Tut er das nur beim Laden eines Dokuments oder auch automatisch bei Veränderung an den Formaten?
Gruss
CCarter
Hi,
ok, das heißt wenn der Browser die Seite liest, geht er alle HTML-Elemente durch und guckt ob er im StyleSheet einen passenden Selektor findet.
vereinfacht ausgedürckt. Du kannst Dir gerne mal den Quellcode von Mozilla angucken ... :-)
D.h. doch aber, dass wenn ich das zentrale Format ändere, sich gar keine Auswirkungen an den darüber konfigurierten Elementen ergibt, bis der Browser die Suche erneut durchführt, oder?
Was er umgehend tun sollte. Ebenso, wenn Du den Dokumentbaum veränderst.
Tut er das nur beim Laden eines Dokuments oder auch automatisch bei Veränderung an den Formaten?
Das kommt auf seine Qualität an.
Cheatah
Tag
ok, das heißt wenn der Browser die Seite liest, geht er alle HTML-Elemente durch und guckt ob er im StyleSheet einen passenden Selektor findet.
Ok, ein Beispiel (dabei ist es egal, ob die Elemente direkt oder mit einem externen Stylesheet formatiert werden):
<body style="color:maroon">
-> Von hier ab ist jeder Text (sofern nicht explizit anders festgelegt) rotbraun.
<div style="font-size:14px">
-> Diese Angabe wirkt sich auf alle folgenden Kindelemente aus.
<div style="font-size:200%">
<p id="vielText" style="font-size:100%">Text</p>
Der Textabsatz erbt vom Body die Schriftfarbe, vom ersten Div die Schriftgröße 14px und vom zweiten Div die Schriftgröße 28px (200%).
Wenn Du nun aber per Javascript die Schriftformatierung auslesen willst (document.getElementById("vielText").style.fontSize;), bekommst Du als Antwort "100%".
Vielleicht wäre es hilfreich, wenn Du mal erklärst, was konkret Du machen willst.
Thomas J.
PS: Und zitiere bitte nur das notwendigste
Hi CCarter,
ok, das heißt wenn der Browser die Seite liest, geht er alle HTML-Elemente durch und guckt ob er im StyleSheet einen passenden Selektor findet. Hat er ihn, behandelt er das Element entsprechend, speichert aber weder die CSS-Eigenschaften selbst, noch einen Link auf den gefundenen Selektor im Element. D.h. doch aber, dass wenn ich das zentrale Format ändere, sich gar keine Auswirkungen an den darüber konfigurierten Elementen ergibt, bis der Browser die Suche erneut durchführt, oder?
wenn der Browser diese Aufgabe für wichtig hält, dann speichert er in seiner internen Repräsentation jeder CSS-Definition eine Liste aller Nodes, die davon betroffen sind ...
Tut er das nur beim Laden eines Dokuments oder auch automatisch bei Veränderung an den Formaten?
... denn dann könnte er genau dies sofort bei der Änderung des Formats hochperformant tun.
Viele Grüße
Michael
Hi Cheatah,
Im Klartext: Ich fürchte, Du mußt "aktiv wissen", daß Du für die CSS-Formatierung eine ID verwendet hast, und mit dieser das entsprechende Objekt adressieren.
genau das will ich derzeit vermeiden.
Bzw. dies ermitteln. Wobei ich mich gerade frage, wozu es nötig ist, die aktuellen Werte von CSS-Eigenschaften einer Node auszulesen.
Ein Beispiel: Ich will alle Nodes durchgehen, um herauszufinden, ob diesen eine Pseudeklasse :before oder :after im externen(!) Stylesheet zugewiesen wurde. Ist dies der Fall, will ich wiederum deren zugewiesene Eigenschaften/Werte auslesen, um diese per DOM an den richtigen Stellen einzufügen, damit der Trottel von IE damit etwas anfangen kann. Deutlich genug? ;-)
Grüße,
Roland
Hi,
Ein Beispiel: Ich will alle Nodes durchgehen, um herauszufinden, ob diesen eine Pseudeklasse :before oder :after im externen(!) Stylesheet zugewiesen wurde. Ist dies der Fall, will ich wiederum deren zugewiesene Eigenschaften/Werte auslesen, um diese per DOM an den richtigen Stellen einzufügen, damit der Trottel von IE damit etwas anfangen kann. Deutlich genug? ;-)
Du musst im Grunde eine CSS-Engine in JavaScript komplett nachbilden. Vermutlich geht dies am einfachsten, indem Du den externen CSS-Code analysierst und in eine Art "vorkompilierte Objektstruktur" umwandelst, mit welcher Du dann gezielt(er) nach passenden Nodes suchen oder aber zumindest leichter prüfen kannst, ob für eine Node ein CSS-Selektor angegeben wurde.
Etwas praktischer gesagt: Nimm Dir (jeweils) einen Selektor, gehe ihn von links nach rechts durch, ermittle alle dazu passenden Nodes (ausgehend von Menge der weiter links gefundenen Nodes). Am Ende hast Du alle Elemente, die verändert wurden. Bei Bedarf musst Du nun noch die Vererbung beachten - unter Berücksichtigung der Ermöglichung des Überschreibens in späteren Elementen, wieder durch beliebig komplexe Vorgänge und mit definierten, aber nicht trivialen Wertigkeiten.
Cheatah
Hi Cheatah,
Du musst im Grunde eine CSS-Engine in JavaScript komplett nachbilden.
Ach so. Das ist natürlich kein Problem für einen ausgewiesenen DOM-Experten wie mich...
Vermutlich geht dies am einfachsten, indem Du den externen CSS-Code analysierst und in eine Art "vorkompilierte Objektstruktur" umwandelst, mit welcher Du dann gezielt(er) nach passenden Nodes suchen oder aber zumindest leichter prüfen kannst, ob für eine Node ein CSS-Selektor angegeben wurde.
Bei der zu untersuchenden Menge der Nodes wird diese Lösung wahrscheinlich nicht sonderlich performant werden. Habe ich schon erwähnt, dass das nur im M$IE funktionieren muss? ;-)
Etwas praktischer gesagt: Nimm Dir (jeweils) einen Selektor, gehe ihn von links nach rechts durch, ermittle alle dazu passenden Nodes (ausgehend von Menge der weiter links gefundenen Nodes). Am Ende hast Du alle Elemente, die verändert wurden. Bei Bedarf musst Du nun noch die Vererbung beachten - unter Berücksichtigung der Ermöglichung des Überschreibens in späteren Elementen, wieder durch beliebig komplexe Vorgänge und mit definierten, aber nicht trivialen Wertigkeiten.
Hier steige ich endgültig aus. Es wäre vielleicht eleganter, einfach alle Nodes in diversen Schleifen durchzugehen und die Existenz der angesprochenen Pseudoformate zu prüfen, eine Funktion, die nur die mir bekannten Elemente durchläuft (ich kenne das Stylesheet), ist aber wesentlich einfacher umzusetzen. Mich würde trotzdem interessieren, wie die Extraktion aller Nodes und das Auslesen deren CSS-Eigenschaften aussehen könnte. Du beginnst ;-p
Grüße,
Roland
Hi Orlando,
Bei der zu untersuchenden Menge der Nodes wird diese Lösung wahrscheinlich nicht sonderlich performant werden.
hast Du die Möglichkeit, sowohl HTML- als auch CSS-Code via HTTP abzusaugen, serverseitig zu analysieren und umzuschreiben und das Ergebnis an den Browser zu senden? (Oder generierst Du den HTML-Code vielleicht sogar selbst?)
Angesichts der Komplexität des Problems bin ich mir nicht mehr sicher, ob JavaScript sich als Lösungssprache wirklich eignet.
Viele Grüße
Michael
Hi Michael,
hast Du die Möglichkeit, sowohl HTML- als auch CSS-Code via HTTP abzusaugen, serverseitig zu analysieren und umzuschreiben und das Ergebnis an den Browser zu senden?
ja.
(Oder generierst Du den HTML-Code vielleicht sogar selbst?)
Das könnte ich natürlich machen, wobei ich den Hebel dann eher bereits bei der Erstellung, d.h. vor dem Hochladen ansetzen würde.
Angesichts der Komplexität des Problems bin ich mir nicht mehr sicher, ob JavaScript sich als Lösungssprache wirklich eignet.
Eine Funktion, die, egal, was im Stylesheet definiert wurde, alle Elemente mit den gewünschten Eigenschaften extrahiert, wäre IMHO die eleganteste Lösung. Warum ich das alles per Javascript lösen will? Ich will vor allem Redundanz vermeiden, wozu sich per CSS generierter Inhalt hervorragend eignet. Alle Zusatzinformationen ein zweites Mal in die Seite zu schreiben missfällt mir prinzipiell. Den Server rackern zu lassen, weil eine Hundertschaft Programmierer es nicht für nötig befindet, Pseudoformate vollständig zu implementieren, liegt mir auch nicht besonders ;-) Es mit dem DOM zu probieren, hätte mich einfach gereizt.
Grüße,
Roland
Hi,
abgesehen davon, dass ich Michael nur zustimmen kann (insbesondere, weil Du offenbar die Umgebung recht genau kennst):
Mich würde trotzdem interessieren, wie die Extraktion aller Nodes und das Auslesen deren CSS-Eigenschaften aussehen könnte. Du beginnst ;-p
Im Grunde musst Du die CSS-Angaben parsen (genauer: den Selektor), um eine NodeList nach und nach einzuschränken. Beispiel:
html > div p.foo:after { bla:blub; foo:bar; }
Der Reihe nach gehst Du durch:
"html" => nodes = document.getElementsByTagName('html');
">" => nodes = nodes.childNodes;
"div" => nodes = nodes.intersect(document.getElementsByTagName('div'));
" " => nodes = nodes.getAllChildren();
"p" => nodes = nodes.intersect(document.getElementsByTagName('p'));
".foo" => nodes = nodes.intersect(document.getElementsByClassName('foo'));
Anschließend ein insertAfter(), dem Du die genannten CSS-Eigenschaften zuschusterst. Natürlich musst Du einige der o.g. Methoden noch selbst implementieren und den Vorgang geringfügig[tm] verfeinern ;-)
Cheatah
Hi Cheatah,
html > div p.foo:after { bla:blub; foo:bar; }
ok, beginnen wir mit einem einfachen Beispiel ;-)
"html" => nodes = document.getElementsByTagName('html');
">" => nodes = nodes.childNodes;
"div" => nodes = nodes.intersect(document.getElementsByTagName('div'));
" " => nodes = nodes.getAllChildren();
"p" => nodes = nodes.intersect(document.getElementsByTagName('p'));
".foo" => nodes = nodes.intersect(document.getElementsByClassName('foo'));
Hm, das sieht interessant aus. Ich habe soeben festgestellt, wie umfangreich das DOM ist und wie wenig ich davon kenne.
Anschließend ein insertAfter(), dem Du die genannten CSS-Eigenschaften zuschusterst.
Tja, mir fehlen auf diesem Gebiet einfach die Grundlagen, was es zu ändern gilt.
Natürlich musst Du einige der o.g. Methoden noch selbst implementieren und den Vorgang geringfügig[tm] verfeinern ;-)
Wird scho' funz'n *g*
Grüße,
Roland
Moin!
Wenn ich über Javascript auf Style-Elemente eines Objekts zugreifen möchte, diese also auslese, klappt das plötzlich nur noch, wenn das CSS direkt im Tag über 'style' definiert wurde, nicht mehr über 'id' und ein externes StyleSheet. Das Merkwürdige ist aber, dass das CSS vom Browser interpretiert und auch angewandt wird, nur JavaScript hat keinen Zugriff mehr darauf. Abfragen werden mit 'null' beantwortet.
Was hast du gemacht? Was funktioniert nicht? Beispiele helfen ungemein, erstens dein Problem konkret nachzuvollziehen, als auch gemachte Fehler zu entdecken.
- Sven Rautenberg