Helge: <tr> auf hidden setzen bei Funktionsaufruf

Hallo ich verzweifel hier fast noch...

ich möchte nach einem click ein <tr> </tr> auf hidden setzen.
Nur das funktioniert bei mir nicht?

Was ist daran falsch?

<script type="text/javascript">
 <!--

function del()
 {
   var liste = document.aktiv;
   var len = liste.elements.length;
   for (var i = 0; i < len; i++)
     {
   document.getElementsByName("aktiv")[0].style.visibility = "hidden";
   }
    }

</script>

<table width="100" border="2">
  <tr style="visibility:show" name="aktiv">
    <td> </td>
  </tr>
  <tr style="visibility:show" name="aktiv">
    <td> </td>
  </tr>
  <tr style="visibility:show" name="aktiv">
    <td> </td>
  </tr>
</table>

<p><a href="#" onClick="del()" >löschen</a></p>

Fehler:
elements ist Null oder kein Objekt

  1. Hi,

    <script type="text/javascript">
    <!--

    function del()
    {
       var liste = document.aktiv;

    Ich bezweifle, daß dieses Objekt verfügbar ist.

    var len = liste.elements.length;

    Hier wird für irgendeine Liste eine Länge ermittelt, die

    for (var i = 0; i < len; i++)
         {
       document.getElementsByName("aktiv")[0].style.visibility = "hidden";

    dann als Maximalindex für eine komplett andere Liste verwendet wird.

    Die Liste document.getElementsByName("aktiv") müßte m.E. leer sein, denn:

    <tr style="visibility:show" name="aktiv">

    das tr-Element hat kein name-Attribut.

    cu,
    Andreas

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
    1. Wenn ich es so mache wie das Script unten geht es aber ich möchte gerne document.getElementById("aktiv")[1].style.visibility = "hidden";
      oder
      document.getElementById("aktiv")[2].style.visibility = "hidden";
       einzeln auschalten das funktioniert bei mir nicht!?

      ---

      <script type="text/javascript">
       <!--

      function del()
       {
         //var liste = document.aktiv;
         //var len = liste.elements.length;
         //for (var i = 0; i < len; i++)
         //  {
         if(document.getElementById)
         document.getElementById("aktiv").style.visibility = "hidden";
        // }
          }

      </script>

      <table width="100" border="2">
        <tr style="visibility:show" id="aktiv">
          <td> </td>
        </tr>
        <tr style="visibility:show" id="aktiv">
          <td> </td>
        </tr>
        <tr style="visibility:show" id="aktiv">
          <td> </td>
        </tr>
      </table>

      <p><a href="#" onClick="del()" >löschen</a></p>

      1. Hi,

        Wenn ich es so mache wie das Script unten geht es aber ich möchte gerne document.getElementById("aktiv")[1].style.visibility = "hidden";

        wie soll das funktionieren?`
        Eine id darf höchstens einmal vorkommen, getElementById darf daher kein Array zurückliefern - es kann ja nur entweder ein Element oder kein Element mit dieser Id geben.

        cu,
        Andreas

        --
        MudGuard? Siehe http://www.Mud-Guard.de/
        1. Und mit Name geht das ja auch nicht.

          Wie löse ich das dann?

          1. Hi,

            Und mit Name geht das ja auch nicht.

            Wie löse ich das dann?

            Wie wärs mit verschiedenen Id-Werten?

            cu,
            Andreas

            --
            MudGuard? Siehe http://www.Mud-Guard.de/
            1. Das ist bei mir nicht möglich

              Wie wärs mit verschiedenen Id-Werten?

              ich habe es nun so gelöst:

              document.getElementsByTagName("tr")[2].firstChild.style.visibility = "hidden";

              1. document.getElementsByTagName("tr")[2].firstChild.style.visibility = "hidden";

                Nur weiß ich immer noch nicht wie das richtge tr lösche?

                Das heißt in jedem tr steht ein link und wenn der geklickt wird soll das tr gelöscht werden.
                wie frage ich nun ab, welcher link geklickt wurde oder welches tr gemeint ist?

                1. Hi Helge :)

                  ich hab hier mal was für dich :)

                  <html>
                  <head>

                  <script type="text/javascript" language="JavaScript">

                  /* Funktion zum verstecken eines Verweises (= Link) */

                  function LinkVerstecken (Zeile)
                   {
                    /* Manche Browser, vorallem ätlere kennen das Objekt "getElemntsByTagName" nicht!
                       Deshalb wird hier zuerst geprüft ob das Objekt existiert. */

                  if (document.getElementsByTagName)
                     {
                      /* Zuerst wieder alle Links sichtbar machen. */

                  for (i = 0; i < document.getElementsByTagName('tr').length; i++)
                       {
                        document.getElementsByTagName('tr')[i].style.visibility = 'visible';
                       }

                  /* Nun den Link auf den geklickt wurde verstecken. */

                  Zeile.style.visibility = 'hidden';
                     }
                   }

                  </script>

                  </head>
                  <body>

                  <table border=1 cellpadding=2 cellspacing=0 width=100>
                   <tr onclick="LinkVerstecken (this);">
                    <td>
                     Link 1
                    </td>
                   </tr>
                   <tr onclick="LinkVerstecken (this);">
                    <td>
                     Link 2
                    </td>
                   </tr>
                   <tr onclick="LinkVerstecken (this);">
                    <td>
                     Link 3
                    </td>
                   </tr>
                   <tr onclick="LinkVerstecken (this);">
                    <td>
                     Link 4
                    </td>
                   </tr>
                   <tr onclick="LinkVerstecken (this);">
                    <td>
                     Link 5
                    </td>
                   </tr>
                  </table>

                  </body>
                  </html>

                  Sobald auf eine Zeile geklickt wird... wird die Funktion zum verstecken eines Links aufgerufen. An diese Funktion wird die Zeile auf die geklickt wurde (this) übergeben.

                  Da vorallem ältere Browser das Objekt getElementsByTagName nicht kennen und um so JavaScript-Fehler zu vermeiden prüft die Funktion zuerst ob das Objekt wirklich existiert.

                  Nun werden zuerst alle Zeilen sichtbar gemacht.

                  Anschließend wird die betreffende Zeile versteckt.

                  Wie du siehst brauchst du, wenn du neue Zeilen anhängst oder dazwischen schreibst bei dem Funktionsaufruf onclick="LinkVerstecken (this);" nichts mehr zu ändern :)

                  Ich hab das eben aufgebaut und getestet. Funktioniert tadellos :)

                  Ich hoffe ich konnte dir helfen :)

                  LG,
                  Robert