firstChild bei dynamischer Tabellenzeile
tomtom
- javascript
Hi,
ich habe folgendes Problem:
Ich habe in meiner HTML Datei eine Tabelle mit 2 Zeilen, nun füge ich dynamisch mit Javascript weitere Zeilen dazu. Funktioniert auch super.
Mein <tr>-Tag bekommt eine id zb "zeile[0]". Nun möchte ich mit
document.getElementById('zeile[0]').firstChild.innerHTML
auf den Inhalt des ersten <td>-Tags zugreifen. Funtkioniert auch, aber nur bei den Elementen die ich dynamisch hinzugefügt habe, bei meinen ersten 2 statischen Zeilen bekomme ich nur ein "undefined" zurück obwohl da das selbe drin steht wie bei meinen dynamischen Zeilen.
Wie komme ich an die Zelleninhalte meiner ersten beiden Zeilen ran?
Vom HTML Code her sehen alle Zeilen absolut identisch aus. Es kommen weder Fehler noch Warnungen.
Browser ist Firefox 1.5.0.3
Vielen Dank
Hi,
Vom HTML Code her sehen alle Zeilen absolut identisch aus. Es kommen weder Fehler noch Warnungen.
sicher? Nur eine Vermutung, aber bei
<tr>
<td>...</td>
</tr>
ist das firstChild von tr eine CDATA-Section bestehend aus (angedeuted) Zeilenumbruch und Tab.
MfG
Rouven
Mein <tr>-Tag bekommt eine id zb "zeile[0]".
IDs dürfen glaub ich nur Buchstaben und Zahlen enthalten, oder zumindest sollte man es so tun.
document.getElementById('zeile[0]').firstChild.innerHTML
innerHTML ist Teil des All-Objektes und nicht im DOM verfügbar. Es wird eigentlich nur vom IE unterstützt, aber manche Browser haben aus Kompatiblitätsgründen eine teilweise Implewmentierung des All-Objektes. Man sollte es aber nicht benutzen.
Lies dir nochmal die Funktionen des node-Objektes durch und benutz besser die.
hi,
innerHTML ist Teil des All-Objektes und nicht im DOM verfügbar. Es wird eigentlich nur vom IE unterstützt, aber manche Browser haben aus Kompatiblitätsgründen eine teilweise Implewmentierung des All-Objektes.
innerHTML haben auch Geckos und Opera inzwischen übernommen - unterhalb des Node-Objektes.
Wie's bei Konqueror/Safari aussieht, weiß ich im Moment nicht.
Man sollte es aber nicht benutzen.
Klar kann man es verwenden - man sollte nur vorher abfragen, ob es auch existiert.
gruß,
wahsaga
Das manche Browser es haben, hab ich ja gesagt. Und das mit dem "sollte man nicht verwenden" war auch so gemeint, dass man es vorher abfragt.
Hallo wahsaga.
innerHTML haben auch Geckos und Opera inzwischen übernommen - unterhalb des Node-Objektes.
Wie's bei Konqueror/Safari aussieht, weiß ich im Moment nicht.
Konqueror hat damit kein Problem, Safari kann ich gerade nicht testen.
Einen schönen Donnerstag noch.
Gruß, Ashura
Hallo Ashura,
... Safari kann ich gerade nicht testen.
Safari unterstützt auch innerHTML. Ich hatte bei den DOM-fähigen Browsern bisher nur im MAC-IE Probleme mit innerHTML. Gelöst habe ich sie, indem ich den Knoten erst leere:
e.innerHTML="";
e.innerHTML=html_zeugs;
Allerdings habe ich nur "einfache" Strukturen, wie <a>, <img>, <p> oder <br> über innerHTML gesetzt. Bei kompletten Tabellen soll es Probleme geben können, habe ich gelesen.
Gruß, Jürgen
Hallo,
innerHTML haben auch Geckos und Opera inzwischen übernommen - unterhalb des Node-Objektes.
Wie's bei Konqueror/Safari aussieht, weiß ich im Moment nicht.Konqueror hat damit kein Problem, Safari kann ich gerade nicht testen.
Musst du auch nicht, wozu gibt es SELFHTML.
Mathias
Hallo molily.
innerHTML haben auch Geckos und Opera inzwischen übernommen - unterhalb des Node-Objektes.
Wie's bei Konqueror/Safari aussieht, weiß ich im Moment nicht.Konqueror hat damit kein Problem, Safari kann ich gerade nicht testen.
Jaja, wer lesen kann ist klar im Vorteil.
Einen schönen Donnerstag noch.
Gruß, Ashura
Hi!
Haben die statischen Zeilen auch eine ID? Läuft der Zähler für die ID richtig?
Gruß
Hans
Hi,
Rouven hat recht.
Da bei den dynamischen Zeilen alles aneinander geklatsch wurde hat er es dort lesen können.
Jetzt sind meine statischen Zeilen auch unsäuberlich und schon geht es.
:-)
Vielen Dank
MFG
tomtom
Ich habe in meiner HTML Datei eine Tabelle mit 2 Zeilen, nun füge ich dynamisch mit Javascript weitere Zeilen dazu. Funktioniert auch super.
Mein <tr>-Tag bekommt eine id zb "zeile[0]". Nun möchte ich mit
document.getElementById('zeile[0]').firstChild.innerHTML
auf den Inhalt des ersten <td>-Tags zugreifen. Funtkioniert auch, aber nur bei den Elementen die ich dynamisch hinzugefügt habe, bei meinen ersten 2 statischen Zeilen bekomme ich nur ein "undefined" zurück obwohl da das selbe drin steht wie bei meinen dynamischen Zeilen.
einfacher, statt den unschönen Weg, den du jetzt gegangen bist, wäre z.b.
document.getElementById('zeile[0]').getElementsByTagName('td')[0]
Damit hast du auf jeden Fall zugriff auf das erste td element nach dem tr und das ist ja was du willst.
Struppi.