cb: sichbarkeit von tabellen

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 ?

  1. 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

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  2. 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.

    1. 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

      --
      Warum nennt sich Andreas hier MudGuard?
      Schreinerei Waechter
      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
      1. 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.

        1. 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

          --
          Warum nennt sich Andreas hier MudGuard?
          Schreinerei Waechter
          Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  3. 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";
      }
    }
    //-->

  4. 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).

    S. auch Coding: Darstellungswechsel - Un-/Sichtbare Elemente: Ein-/Ausklappen, Verstecken, Transparenz, Farbe

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
  5. 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

    --
    Am Ende wird alles gut.
    1. Hi,

      Da kmmst Du um eine kleine Abfrage nicht herum...

      Doch, natürlich kommt man da herum! =:-/

      S. mein Posting.

      Gruß, Cybaer

      --
      Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
      1. 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

        --
        Am Ende wird alles gut.
        1. 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

          --
          Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
          1. 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

            --
            Am Ende wird alles gut.
            1. 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

              --
              Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
              1. 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

                --
                Am Ende wird alles gut.
                1. 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

                  --
                  Warum nennt sich Andreas hier MudGuard?
                  Schreinerei Waechter
                  Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
                  1. 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

                    --
                    Am Ende wird alles gut.
                2. 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

                  --
                  /voodoo.css:
                  #GeorgeWBush { position:absolute; bottom:-6ft; }
                3. 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

                  --
                  Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!