tabelle erweitern
Tobiash.
- javascript
0 bleicher0 Tobiash.
0 wahsaga0 Gernot Back
0 Axel Richter
Hallo,
ich habe eine tabelle die nach anklicken eines buttons immer um eine zeile erweitert werden soll mit JavaScript.
Deswegen habe ich meiner Tabelle eine ID verpasst um diese mit JavaScript ausfindig machen zu können:
<table cellpadding=0 cellspacing=0 width="450" id="ratetable">
in dieser Tabelle sind bereits 4 zeilen vorhanden.
Wenn ich nun auslesen möchte wie viele zeile bereits vorhanden sind mit folgender codezeile:
var Anzahl = opener.document.getElementById('ratetable').childNodes.length;
(das ganze passiert in einem separatem Fenster, deswegen auch opener) bekomme ich nur eine 1 zurück als wert obwohl 4 zeilen bereits bestehen.
Warum gibt mir das ganze falsche ergebnisse zurück?
danke für eure hilfe! ;)
Tobiash.
(das ganze passiert in einem separatem Fenster, deswegen auch opener) bekomme ich nur eine 1 zurück als wert obwohl 4 zeilen bereits bestehen.
du kriegst auch ein array zurück http://de.selfhtml.org/navigation/suche/index.htm?Suchanfrage=childnodes- zühlst du es entsprechend aus?
__________________________-
du kriegst auch ein array zurück http://de.selfhtml.org/navigation/suche/index.htm?Suchanfrage=childnodes- zühlst du es entsprechend aus?
__________________________-
aber warum, ich lese mit length doch die Anzahl der Elemente in dem Baum aus und der Rückgabewert ist ein Integer in einer Variable (hier nochmal der code):
var Anzahl = opener.document.getElementById('ratetable').childNodes.length;
ich verstehe nur nicht, warum er mir ne 1 ausgibt...:(
tobiash.
hi,
in dieser Tabelle sind bereits 4 zeilen vorhanden.
Wenn ich nun auslesen möchte wie viele zeile bereits vorhanden sind mit folgender codezeile:var Anzahl = opener.document.getElementById('ratetable').childNodes.length;
(das ganze passiert in einem separatem Fenster, deswegen auch opener) bekomme ich nur eine 1 zurück als wert obwohl 4 zeilen bereits bestehen.
Warum gibt mir das ganze falsche ergebnisse zurück?
Schau dir das Beispiel zu childNodes und die Erklärung zur "Zählung" noch mal an.
Der Texnode mit dem Inhalt "fettem Text" wird dort nicht mitgezählt, weil er kein direktes Kind des Absatzes ist - er ist Kind des darin liegenden B.
Und die Tabellenzellen deiner Tabelle sind keine Kinder von Table, sondern von Tbody - der existiert in der DOM-Repräsentation deiner Tabelle auch dann, wenn du ihn nicht explizit angibst.
Btw: Es muss nicht immer DOM 2 sein, gutes altes DOM Level 1 ist auch kein "Pfui" - table.rows liefert dir eine Collection aller Tabellenzeilen, und deren length sollte "stimmen".
gruß,
wahsaga
Hallo Tobiash.,
(das ganze passiert in einem separatem Fenster, deswegen auch opener) bekomme ich nur eine 1 zurück als wert obwohl 4 zeilen bereits bestehen.
Du vergisst dass unterhalb des TABL-Elements erst einmal ein TBODY-Element kommt, wenn du keins angibts ist dennoch implizit genau eines vorhanden. Von TR-Elementen ist erst in der nächsten Generation die Rede.
Gruß Gernot
Hallo Tobiash.,
(das ganze passiert in einem separatem Fenster, deswegen auch opener) bekomme ich nur eine 1 zurück als wert obwohl 4 zeilen bereits bestehen.
Du vergisst dass unterhalb des TABL-Elements erst einmal ein TBODY-Element kommt, wenn du keins angibts ist dennoch implizit genau eines vorhanden. Von TR-Elementen ist erst in der nächsten Generation die Rede.
Gruß Gernot
was ist denn das TBODY genau für ein Element? bzw. wie kann ich es angeben?
gruß,
tobias
hi,
was ist denn das TBODY genau für ein Element?
Da du das SELFFORUM gefunden hast, dürfen wir doch wohl annehmen, dass du SELFHTML auch findest?
gruß,
wahsaga
hat sich bereits erledigt. danke eurer hilfe funktioniert jetzt alles einwandfrei bei mir... sogar besser als ich es erwartet hatte...:D
danke nochmals!
tobiash.
Hallo,
<table cellpadding=0 cellspacing=0 width="450" id="ratetable">
in dieser Tabelle sind bereits 4 zeilen vorhanden.
Wenn ich nun auslesen möchte wie viele zeile bereits vorhanden sind mit folgender codezeile:var Anzahl = opener.document.getElementById('ratetable').childNodes.length;
(das ganze passiert in einem separatem Fenster, deswegen auch opener) bekomme ich nur eine 1 zurück als wert obwohl 4 zeilen bereits bestehen.
Ja, Du bekommst als childNode das TBODY-Element zurück. Nein, Du hast nicht keins ;-). Jede HTML-Tabelle hat mindestens einen TBODY, auch wenn der HTML-Tag dafür optional ist. Bei XHTML ist das anders. Davon wissen aber die DOM-Implementationen einiger Browser wieder noch nichts.
Warum gibt mir das ganze falsche ergebnisse zurück?
Benutze statt childNodes, was sehr allgemein ist und alles Mögliche sein kann, lieber gezielt Abfragen nach dem, was Du wirklich willst.
[HTMLTableElement].rows z.B. bringt wirklich eine Collection aller HTMLTableRowElemente in der Tabelle.
viele Grüße
Axel