Max: JS - Anzahl der Zeilen einer Tabelle

Hallo!

Ich habe versucht, mit folgendem Code die Anzahl der Zeilen einer Tabelle via JS herauszufinden:

document.getElementsByTagName('table')[0].childNodes.length

Leider funktioniert das so nicht, es wird nur 1 Kindknoten gefunden.

Wie kann ich das Problem lösen?

Danke im Voraus,

Max

  1. Hallo Max.

    Ich habe versucht, mit folgendem Code die Anzahl der Zeilen einer Tabelle via JS herauszufinden:

    document.getElementsByTagName('table')[0].childNodes.length

    Leider funktioniert das so nicht, es wird nur 1 Kindknoten gefunden.

    Das Element table hat ja auch (normalerweise) nur ein Kindelement: tbody.

    Einen schönen Montag noch.

    Gruß, Ashura

    --
    Selfcode: sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:) fl:( ss:) ls:[ js:|
    30 Days to becoming an Opera8 Lover -- Opera Mini on Treo
    Meine Browser: Opera 8.02 | Firefox 1.0.6 | Lynx 2.8.5 | Netscape 4.7 | IE 6.0
    [Deshalb frei! - Argumente pro freie Software]
    1. Hallo,

      Ich habe versucht, mit folgendem Code die Anzahl der Zeilen einer Tabelle via JS herauszufinden:

      document.getElementsByTagName('table')[0].childNodes.length

      Leider funktioniert das so nicht, es wird nur 1 Kindknoten gefunden.

      Das Element table hat ja auch (normalerweise) nur ein Kindelement: tbody.

      Ja, genauer gesagt:
      Das tbody-Element ist (in HTML und HTML-kompatiblem XHTML) immer da, auch wenn es im Quellcode nicht drinsteht. Denn sein Start- und sein End-Tag können weggelassen werden. Der Browser fügt dieses Element also immer hinzu. Aus dem Code <table><tr><td>bla</td></tr></table> wird im DOM-Baum table → tbody → tr → td → »bla«.

      Wenn man auf alle tr-Elemente zugreifen will, kann man also notieren:
         tabellenelement.getElementsByTagName("tr")
      oder einfacher gemäß dem HTML-spezifischen DOM
         tabellenelement.rows
      Das sind alles »Collections«, also haben sie eine length-Eigenschaft.

      tabellenelement.tBodies[0].childNodes ginge auch, allerdings muss man dabei beachten, dass manche Browser Whitespace (Zeilenumbrüche, Leerzeichen, Tabulatoren usw.) als Textknoten betrachten. An wenigstens empfehlenswert ist daher tabellenelement.firstChild.childNodes u.ä. Dabei kann man sich nicht sicher sein, ob firstChild auf das tbody-Element zeigt.
      tabellenelement.tBodies[0].rows wäre eine weitere Möglichkeit, wenn man mögliche tr-Elemente in thead und tfoot ignorieren will.

      Mathias