Javascript und die css-Eigenschaft display
Tarquinio
- javascript
0 Beat0 Tarquinio0 josh0 Beat
0 Gunnar Bittersmann
Hallo Ihrs,
ich hab da mal ein ganz komisches Problem.
Es kommt ja relativ häufig vor, dass man ein html-Element,welches durch css-Formatierung (display:none) nicht erscheint, mit Javascript erscheinen lassen möchte. Also greift man auf das html-Element zu und setzt die display-Eigenschadt auf "" (z.b. document.getElementById("id").style.display=""). Aber wieso kann man diese Eigenschaft nicht per Javascript verändern, wenn sie vorher per css gesetzt wurde? Ich muss jedesmal den display-Eintrag in der css-Datei entfernen und ihn beim Laden des Dokumentes per Javascript auf "none" setzen.
Is das normal so oder beachte ich was nicht?
Würde mich über eine Antwort freuen und bedanke mich schonmal im Vorraus.
Hallo Ihrs,
Hallo Dus
ich hab da mal ein ganz komisches Problem.
hihi
Es kommt ja relativ häufig vor, dass man ein html-Element, welches durch css-Formatierung (display:none) nicht erscheint, mit Javascript erscheinen lassen möchte. Also greift man auf das html-Element zu und setzt die display-Eigenschadt auf "" (z.b. document.getElementById("id").style.display="").
Und was ist die display Eigenschaft "" ?
Aber wieso kann man diese Eigenschaft nicht per Javascript verändern, wenn sie vorher per css gesetzt wurde?
Kann man doch.
Ich muss jedesmal den display-Eintrag in der css-Datei entfernen und ihn beim Laden des Dokumentes per Javascript auf "none" setzen.
Is das normal so oder beachte ich was nicht?
Wenn du was angezeigt haben willst, dann muss es euin display Typ sein der nicht 'none' ist, und der im CSS 2.1 standard als display Typ aufgeführt ist. In der Regel also inline oder block.
Funktioniert bei mir wunderbar.
mfg Beat
Hui, hab mir schon gedacht dass es ne Kleinigkeit ist.
Hab zum Anzeigen von Elementen display immer auf "" (also quasi fast nix ;) ) gesetzt. Werds in Zukunft auf inline setzen. ;) Danke
Hallo,
Hab zum Anzeigen von Elementen display immer auf "" (also quasi fast nix ;) ) gesetzt. Werds in Zukunft auf inline setzen. ;) Danke
Aber was wenn das versteckte Element ein Blockelement ist?
Gruß
Aber was wenn das versteckte Element ein Blockelement ist?
jaja - ja.....
Und was, wenn er es via CSS versteckt und dann Javascript zur Bedingung macht, um es anzuzeigen?
Pfui, pfui pfui.....
Zuerst sollte er den Default im CSS registrieren, dann mit JS ausblenden und bei Bedarf mit JS wieder restaurieren.
mfg Beat
@@Tarquinio:
Hab zum Anzeigen von Elementen display immer auf "" (also quasi fast nix ;) ) gesetzt.
Damit gilt dann der durch CSS festegelegte Wert (in deinem Fall also ).
'foo.style.display = "";
' lässt sich nutzen, um Tabellenzellen wieder anzeigen zu lassen, die man vorher mit 'foo.style.display = "none";
' (nicht etwa mit CSS!) ausgelendet hat. Mit 'foo.style.display = "table-cell";
' kommt nämlich unser alter Freund IE nicht klar, der will 'foo.style.display = "block";
', was aber für standardkonforme Browser falsch ist.
Mit 'foo.style.display = "";
' gilt dann der durch CSS festegelegte Wert. Wenn im Nutzerstylesheet und im Autorenstylesheet nichts angegeben ist (Kaskade), dann gilt das im browserinternen Stylesheet Angegebene (und da unterscheidet sich halt der IE von den Guten.)
In deinem Fall gilt die Angabe aus deinem Autorenstylesheet ('display: none'); das Element bleibt also unsichtbar.
Live long and prosper,
Gunnar