Was passiert bei ...style.display =''

Teilzeitphilosoph

Erfahrenes Mitglied
Moinz.

Ich spiel gerade ein wenig mit

HTML:
document.getElementById(meins).style.display='';

rum und hab dazu ne Frage. Laut dieser Seite hier

http://de.selfhtml.org/css/eigenschaften/positionierung.htm#display

gibt es für den Bereich zwischen ' ' nur die genannten Werte. Nun hab ich den lustigen Effekt, dass nur, wenn ich gar nichts eingebe, meine Anzeige genau da erscheint wo sie soll. Daher wollte ich mal wissen, was die Browser daraus machen, wenn man keinen Wert zwischen die beiden Hochkommata setzt?

-bedank-
TZP
 
Ich schätze, dass die Browser dadurch den Standard wieder herstellen.
HTML-Elemente haben für Display Standardwerte, So hat Div den Wert block, Span hat inline.

So wie ich das bis jetzt mitbekommen habe, setzt ...style.display='' den Wert einfach wieder auf die 'Voreinstellung'.
Hatte mich darüber auch mal gewundert und das dann mit verschiedenen Elementen durchgespielt, es kam immer der Standardwert raus.

Grüße
 
Mmm...das mit dem Standartwert hab ich schon fast befürchtet. Du weißt aber nich zufällig, welcher Wert das ist? Ich hab testweise mal alle Möglichkeiten ausprobiert und keine hatte das gleiche Ergebnis in Relation zum ' '. Es muss auch etwas sein, worauf der IE6 klarkommt, denn der zickt -surprise surprise- mal nich rum.

Bei mir hängt der Code übrigens in einer Table drin. Nich das Gelbe vom Ei aber zu meiner Verteidigung: Das is nich von mir. :-(
Ich hätte jetzt gedacht, dass der default auf "inline" steht und dank der Table dann zurecht geschoben wird. Aber wie gesagt, nur ' ' klappt fehlerfrei in allen Browsern.
 
Wenn der Code in einer Tabelle ist probier mal eins von denen:

table = Das Element enthält tabellarisch angeordnete Kindelemente und erzeugt eine neue Zeile. Wirkt wie das table-Element in HTML.
inline-table = Das Element enthält tabellarisch angeordnete Kindelemente und wird im laufenden Textfluss angezeigt. Wirkt wie das table-Element in HTML, aber inline.
table-row = Das Element enthält nebeneinander angeordnete Kindelemente. Wirkt wie das tr-Element in HTML.
table-cell = Das Element steht für eine Tabellenzelle. Wirkt wie die Elemente th und td in HTML.
table-row-group = Das Element enthält eine Gruppe von Elementen mit nebeneinander angeordneten Kindelementen. Wirkt wie das tbody-Element in HTML.
table-header-group = Das Element enthält eine Gruppe von Elementen mit nebeneinander angeordneten Kindelementen. Gedacht für die Kopfzeile einer Tabelle. Wirkt wie das thead-Element in HTML.
table-footer-group = Das Element enthält eine Gruppe von Elementen mit nebeneinander angeordneten Kindelementen. Gedacht für die Fußzeile einer Tabelle. Wirkt wie das tfoot-Element in HTML.
table-column = Das Element beschreibt die Eigenschaften der Zellen in einer Spalte. Wirkt wie das col-Element in HTML.
table-column-group = Das Element enthält eine Gruppe von Elementen, die die Eigenschaft von Zellen in einer Spalte beschreiben. Wirkt wie das colgroup-Element in HTML.
table-caption. Das Element steht für eine Tabellenüberschrift. Wirkt wie das caption-Element in HTML (auch für th-Elemente).
(http://de.selfhtml.org/css/eigenschaften/positionierung.htm#display)
 
Moin,

der Standardwert für display ist "inline" .

Dieser wird überstimmt von den Einstellungen des Browsers.
Diese wiederum werden überstimmt von deinen Einstellungen.

Entfernst du das gesetzte Attribut, kommt wieder die Browsereinstellung zum Tragen, und da ist der Haken: jeder Browser kann da seine eigene Einstellung haben.
Es gibt dort speziell bei Tabellen kein alleiniges Allheilmittel, wenn du bspw. auch IE6 beücksichtigen willst.

Was du brauchst, wäre eine Browserweiche für die zu berücksichtigenden Browser, welche bspw. für IE6 "block" zuweist und für FF "table"
 
Mja, soweit schon ma meinen Dank. Aber ich muss mal ganz doof fragen: Wenn ich keinen Wert eingebe und es einfach leer lasse, dann stimmt ja die Anzeige. Brauch ich denn unbedingt einen Wert oder ist das so ne Style-geschichte, die zum guten Ton gehört? Oder gibt es die Möglichkeit, dass bei irgendwem es irgendwie crashen könnte?
Ich persönlich bin ja heilfroh, dass sogar der IE6 da keine Schande draus macht...so was passiert ja nich so oft. ^^
 
Ich hätte da noch mal ne Folgefrage. Erst ma soweit meinen Dank für die Antworten. :)
Wie ist denn das bei der Hintergrundfarbe? Ich hab z.B.

HTML:
document.getElementById(meins).style.background='#555555';

und will per JS auf den Default-wert zurück. Mit FFFFFF klappt das nicht, denn dann übermalen die Browser mir den unteren und rechten Rand. Ein alert zu der Hintergrundfarbe hat genau nüscht ergeben...nich ma irgendwas. Daher ist es auch kein Problem so was wie

HTML:
document.getElementById(meins).style.background='';

zu schreiben. Jetzt aber die Gegenfrage: Ich hab mir sagen lassen, dass der Default bei so was "Inherit" ist. Sollte man daher lieber background='inherit' angeben oder es doch leer lassen oder ist das eh egal, weil beides das Gleiche bedeutet? Mir geht´s weniger um Codesicherheit und -lesbarkeit als mehr um den Gedanken, dass irgendein Browser daraus Grütze macht/machen könnte.

-bedank-
TZP
 
Der Default(Initial)-Wert der background-color ist "transparent"

"Inherit" bedeutet: das Element erbt die Eigenschaft vom Elternelement.
 
Transparent? Das erklärt, warum es keine RGB dazu gibt. Also kann ich schreiben

HTML:
document.getElementById(meins).style.background='transparent';

und alle sind glücklich. :)

-bedank-
TZP
 

Neue Beiträge

Zurück