René: kann ich den aktuellen Zustand abfragen? und wie?

Hallo,
ich möchte per Mausklick eine Tabelle mit der id="test" per test.style.display="none"/"block"; ein oder ausblenden.

Wie kann ich nun abfragen ob die Tabelle ein oder ausgeblendet ist?
um dann dementsprechend ein oder aus zublenden.

Danke.

  1. Hallo,

    Wie kann ich nun abfragen ob die Tabelle ein oder ausgeblendet ist?

    if (test.style.display == "none")
      test.style.display = "block";

    Mit freundlichen Grüßen
       Dimitri Rettig

    1. Hallo,

      Wie kann ich nun abfragen ob die Tabelle ein oder ausgeblendet ist?

      if (test.style.display == "none")
        test.style.display = "block";

      Mit freundlichen Grüßen
         Dimitri Rettig

      hab folgendes script geschrieben

      --------------

      function ShowHideBlock(nr)
      {
        if(document.getElementById)
        {
          obj=document.getElementById(nr);
        }
        if(document.all && !document.getElementById)
        {
          obj=document.all[nr];
        }

      if (obj.style.display == "none")
        {
          obj.style.display = "block";
        }

      if (obj.style.display == "block")
        {
          obj.style.display = "none";
        }
      }

      ------------------

      beim Aufruafen kommt aber folgender Fehler

      Objekt erforderlich

      wo liegt der Fehler

      1. Hallo René,

        Objekt erforderlich

        Interessant ist natürlich immer noch die betroffene Zeile.

        wo liegt der Fehler

        Vermutlich daran, dass Du getElementById() eine Zahl übergibst, was Deine Variablenbenennung andeutet.
        Du solltest Da aber eine Id angeben.

        Grüße

        Daniel

        1. Hallo René,

          Objekt erforderlich
          Interessant ist natürlich immer noch die betroffene Zeile.
          wo liegt der Fehler
          Vermutlich daran, dass Du getElementById() eine Zahl übergibst, was Deine Variablenbenennung andeutet.
          Du solltest Da aber eine Id angeben.

          Grüße

          Daniel

          ist mir schon klar das hab ich der fehler liegt zeile 14 zeichen 3

          1    function ShowHideBlock(nr)
          2    {
          3      if(document.getElementById)
          4      {
          5        obj=document.getElementById(nr);
          6      }
          7      if(document.all && !document.getElementById)
          8      {
          9        obj=document.all[nr];
          10     }
          11
          12
          13    if (obj.style.display == "none")
          14      obj.style.display = "block";
          15
          16    if (obj.style.display == "block")
          17      obj.style.display = "none";
          18
          19  }

          1. Hallo René,
            und wozu sollte das:

            13    if (obj.style.display == "none")
            14      obj.style.display = "block";
            15
            16    if (obj.style.display == "block")
            17      obj.style.display = "none";

            überhaupt gut sein? ändert doch nichts (außer für ein paar Millisekunden..;-)

            Gruß
            Ingo

          2. So hab die Lösung selber entwickelt hier nochmal für alles die es interessiert.
            eine kleine Anleitung und ein Praxisbeispiel gibt es auf meiner Homepage s.o.

            -----------------------
            Das Script: showhide.js
            -----------------------

            function ShowHide(nr)
            {
              if(document.getElementById)
              {
                obj=document.getElementById("ob"+nr);
              }
              if(document.all && !document.getElementById)
              {
                obj=document.all["ob"+nr];
              }

            //Display Funktion

            if(obj.style.display=="none")
              {
                obj.style.display="block";
              }
              else if(obj.style.display=="block")
              {
                obj.style.display="none";
              }
            }

            ---------------------------
            Einbinden in die HTML Datei
            ---------------------------
            <head>
              <script src="skripte/showhide.js"></script>
            </head>

            <body>

            <table border="0">
              <tr style="cursor: hand;" onclick="showhide(1)"><td>Ein oder ausblenden</td></tr>
            </table>

            <table style="display: block;" border="0" bgcolor="#EFEFEF" width="100" height="50" id="ob1">

            <!--wichtig ist die Style-Angabe sonst bekommt man zwar keinen Fehler aber es funktioniert nicht-->

            <tr><td>Test Tabelle</td></tr>
            </table>

            </body>

            Sollte noch jemand dazu Fragen haben der schreibe mir eine Mail, Gruß René

            1. hi René,

              So hab die Lösung selber entwickelt hier nochmal für alles die es interessiert.

              zwar wirklich löblich, daß Du Dich nochmal selbst dran versucht hast, aber die Lösung von Christian ist wohl doch um einiges einfacher und funktioniert genauso gut (abgesehen vom IE 4).
              Und wenn Du hier das Variablenergebnis einbauen würdest, bliebe eine einzige Anweisung über, die Du sogar direkt bei onclick= einsetzen könntest.

              Nach dem Motto 'Weniger ist mehr':

              if(document.all && !document.getElementById)

              Ist der IE4 wirklich noch relevant?

              else if(obj.style.display=="block")

              wenn schon mit if... dann reicht 'else' hier völlig aus, oder?

              <table style="display: block;" border="0" bgcolor="#EFEFEF" width="100" height="50" id="ob1">

              nur mal zum Beispiel: wenn Du ohnehin eine id und einen style verwendest, warum dann nicht den style von #ob1 mit allen Eigenschaften im head komplett definieren (zumal "height" bei <table> eigentlich nicht zulässig ist)?

              Gruß
              Ingo

  2. Hi,

    test.style geht nur im IE, soweit ich weiß.

    nimm lieber document.getElementById("test").style

    dann so:

    var obj = document.getElementById("test");
    obj.style.display = (obj.style.display == "none") ? obj.style.display = "block" : obj.style.display = "none";

    macht immer den entgegengesetzten Zustand.

    Christian

    1. hi,

      var obj = document.getElementById("test");
      obj.style.display = (obj.style.display == "none") ? obj.style.display = "block" : obj.style.display = "none";

      wenn wir schon am tipparbeit sparen sind, warum dann nicht gleich so:

      var obj = document.getElementById("test").style.display;
      obj = (obj == "none") ? obj = "block" : obj = "none";

      ;-)

      gruss,
      wahsaga