sichbarkeit von tabellen
cb
- javascript
Ich möchte eine Tabelle mit diesem Befehl einblenden:
Tabelle.style.setAttribute("display","inline");
Unter dem IE geht es wunderbar, nur wie gehts mit dem Firefox ?
Hi,
Ich möchte eine Tabelle mit diesem Befehl einblenden:
Tabelle.style.setAttribute("display","inline");
Unter dem IE geht es wunderbar,
Der macht aber auch jeden Scheiß mit.
style ist bereits Attribut, es hat keine Attribute.
Üblicherweise werden CSS-Eigenschaften per
node.style.property = "value";
gesetzt.
Andere Frage: bist Du sicher, daß "inline" der geeignete Wert für Deine Tabelle ist?
"table" oder wenn es denn tatsächlich inline sein soll, "inline-table" erscheinen mir geeigneter.
cu,
Andreas
Liebe(r) cb,
Tabelle.style.setAttribute("display","inline");
Das scheint mir ziemlicher Blödsinn zu sein. Eine Tabelle ist übrigens ein Block-Element.
Probiere mal lieber das hier:
Tabelle.style.display = "block";
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Hi,
Eine Tabelle ist übrigens ein Block-Element.
Das ist noch lange kein ausreichender Grund,
Tabelle.style.display = "block";
display auf "block" zu setzen.
cu,
Andreas
Lieber MudGuard,
Das ist noch lange kein ausreichender Grund,
Tabelle.style.display = "block";
display auf "block" zu setzen.
Wäre ein "compact" besser?
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Hi,
Das ist noch lange kein ausreichender Grund,
Tabelle.style.display = "block";
display auf "block" zu setzen.
Wäre ein "compact" besser?
"table" (oder, wenn inline gewünscht ist: "inline-table")
cu,
Andreas
Ich möchte eine Tabelle mit diesem Befehl einblenden:
Tabelle.style.setAttribute("display","inline");
Unter dem IE geht es wunderbar, nur wie gehts mit dem Firefox ?
Nuja , die Tabelle soll halt "submenues" darstellen ... nur irgendwie klappt das alles garnicht
hier mal die funktion für den context :
function toggle(Tabelle,Node,Buch,Suffix)
{
var IsClosed = true;
IsClosed = Tabelle.style.getAttribute("display")=="none";
if(IsClosed==false)
{
//document.getElementById(Tabelle).style.display = "none");
Tabelle.style.setAttribute("display","none");
ToggleString="images/tree_plus" + Suffix + ".gif";
Node.src=ToggleString;
Buch.src="images/tree_buch.gif";
}
else
{
Tabelle.style.setAttribute("display","block");
ToggleString="images/tree_minus" + Suffix + ".gif";
Node.src=ToggleString;
Buch.src="images/tree_buch_open.gif";
}
}
//-->
Hi,
Ich möchte eine Tabelle mit diesem Befehl einblenden:
Tabelle.style.setAttribute("display","inline");
Einer CSS-Eigenschaft (style) ein HTML-Attribut (setAttribute) zuzuweisen, ist unsinnig -> style.display="block"
Unter dem IE geht es wunderbar, nur wie gehts mit dem Firefox ?
Der IE ("block") hält sich hier nicht an den CSS-Standard ("table").
Lösche den Style (display=""), um den Default-Stil einzustellen. Dies klappt allerdings nur, wenn du den Stil nicht vorher mit CSS explizit gesetzt hast (mit JS gesetzte Stile werden hingegen damit überschrieben). Wurde der Stil aber bereits mittels CSS gesetzt, mußt Du hier mit einer Browserweiche arbeiten (i.d.R. unnötig).
Gruß, Cybaer
Hi,
Ich möchte eine Tabelle mit diesem Befehl einblenden:
Tabelle.style.setAttribute("display","inline");
FF braucht als Wert fuer die Eigenschaft display "table" (bzw. "table-row" bei tr). Da kmmst Du um eine kleine Abfrage nicht herum...
Gruesse, Joachim
Hi,
Da kmmst Du um eine kleine Abfrage nicht herum...
Doch, natürlich kommt man da herum! =:-/
S. mein Posting.
Gruß, Cybaer
Hi,
Da kmmst Du um eine kleine Abfrage nicht herum...
Doch, natürlich kommt man da herum! =:-/
wenn ich davon ausgehe, dass er mit js den Table wahlweise verstecken/anzeigen will, wuesste ich nicht wie.
Wenn er den Table lediglich mit Dom _erzeugen_ will gibts ja keine Notwendigkeit, diese (Default-)Eigenschaft zu setzen. Aber vielleicht hast Du seinen Ansatz besser verstanden...
Gruesse, Joachim
Hi,
Doch, natürlich kommt man da herum! =:-/
wenn ich davon ausgehe, dass er mit js den Table wahlweise verstecken/anzeigen will, wuesste ich nicht wie.
Schrieb ich doch:
display="none" -> verstecken
display="" -> anzeigen
Gruß, Cybaer
Hi,
display="none" -> verstecken
display="" -> anzeigen
hm, in der Tat. Wie "sauber" ist es, mit leeren Werten zu arbeiten?
Aergerlich nur das Fehlverhalten bei Css-Vorgaben, denn in der Regel wuerde man ja zunaechst alle Elemente ausgeblendet anlegen, um sie dann bei Bedarf anzuzeigen. Die gute Nachricht: mit inline-styles gehts:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<style type="text/css">
table {border:1px solid red;margin-top:10px;}
</style>
<script type="text/javascript">
var stat = false;
function dpl() {
if (stat) document.getElementById('xyz').style.display="none";
else document.getElementById('xyz').style.display="";
stat = stat? false : true;
}
</script>
</head>
<body>
<a href="#" onclick="dpl()">wech/hin</a>
<table style="display:none" id="xyz">
<tr><td>tester</td></tr>
</table>
</body>
</html>
Gruesse, Joachim
Hi,
hm, in der Tat. Wie "sauber" ist es, mit leeren Werten zu arbeiten?
Sehr sauber.
Du könntest auch z.B. auch "default" nehmen. Bei unbekannten Werten soll der Default-Wert genommen werden. ;-)
Aergerlich nur das Fehlverhalten bei Css-Vorgaben, denn in der Regel wuerde man ja zunaechst alle Elemente ausgeblendet anlegen, um sie dann bei Bedarf anzuzeigen.
Eigentlich nicht. Denn wird ein Objekt per Regel aus- und nur mit JS eingeblendet, dann bleibt es versteckt, falls JS deaktiviert ist. I.d.R. wird man vernünftigerweise alles darstellen und erst mit JS ausblenden (jedenfalls solange es um Content geht).
Die gute Nachricht: mit inline-styles gehts:
Hmm, browserübergreifend?
Gruß, Cybaer
Hi,
hm, in der Tat. Wie "sauber" ist es, mit leeren Werten zu arbeiten?
Sehr sauber.
Dann verstehe ich nicht, warum es beim FF Probleme gibt, wenn der Wert mit Css vorgegeben ist. Ist es ein (gemeldeter) Bug?
I.d.R. wird man vernünftigerweise alles darstellen und erst mit JS ausblenden (jedenfalls solange es um Content geht).
Beispiel: Zubehoer auswaehlen -> Anzeige in Liste mit ausgewaehltem Zubehoer. Deine Vorgehensweise duerfte hier einige Verwirrung stiften.
Die gute Nachricht: mit inline-styles gehts:
Hmm, browserübergreifend?
Opera, Firefox, IE... mehr Zeit habe ich jetzt nicht...
Gruesse, Joachim
Hi,
hm, in der Tat. Wie "sauber" ist es, mit leeren Werten zu arbeiten?
Sehr sauber.
Dann verstehe ich nicht, warum es beim FF Probleme gibt, wenn der Wert mit Css vorgegeben ist. Ist es ein (gemeldeter) Bug?
Ist doch logisch:
Wenn Du per Javascript styles setzt, ist das das Äquivalent zum style-Attribut.
Wenn Du dann eine Eigenschaft per CSS löschst (style.property = "" setzt), wird diese Eigenschaft aus dem style-Attribut entfernt.
Wenn es im Stylesheet aber noch ein Ruleset gibt, dessen Selektor auf das Element zutrifft und in dem diese Eigenschaft gesetzt wurde, besteht dieses Ruleset natürlich nach wie vor (es wurde ja nicht geändert).
Also ist diese Einstellung nach wie vor vorhanden - sie ist halt nicht mehr durch den inline-style (der immer die höchste specificity hat) überschrieben.
cu,
Andreas
Hi,
Ist doch logisch:
eine logische Erklaerung, in der Tat. Damit waere dann auch Cybaers Rueckfrage nach dem "browseruebergreifend" geklaert - es duerfte eigentlich keine Probleme geben.
Gruesse, Joachim
hi,
I.d.R. wird man vernünftigerweise alles darstellen und erst mit JS ausblenden (jedenfalls solange es um Content geht).
Beispiel: Zubehoer auswaehlen -> Anzeige in Liste mit ausgewaehltem Zubehoer. Deine Vorgehensweise duerfte hier einige Verwirrung stiften.
und wie ist deine vorgehensweise für den fall, dass JS nicht zur verfügung steht?
dass die anzeige dann _gar nicht_ erfolgt, dürfte nicht nur für verwirrung, sondern gar für verärgerung sorgen.
alternative wäre dann, diese liste in eine extra seite auszulagern, auf die "Zubehör auswählen" dann verlinkt (wieder ein link und ein dokument mehr) - oder halt Cybaers vorschlag, liste per default sichtbar, wenn JS vorhanden damit nach dem laden ausblenden.
gruß,
wahsaga
Hi,
Beispiel: Zubehoer auswaehlen -> Anzeige in Liste mit ausgewaehltem Zubehoer. Deine Vorgehensweise duerfte hier einige Verwirrung stiften.
Man kann den flexiblen Content ja in eine umfassende Tabelle(nzelle) packen. Direkt vor dem Ende kann man verstecken. Da die Tabelle aber i.d.R. erst dargestellt wird, wenn sie komplett fertig gerendert wurde, bekommt der JS-Anwender vom Verstecken nichts mit. Der JS-lose Surfer sieht aber den kompletten Inhalt.
Gruß, Cybaer