ID einer Tabellenzeile auslesen
Max
- javascript
Hallo!
Ich muss die id einer Tabellenzeile auslesen.
Mit folgendem Code funktioniert es zwar im Firefox (1.0.6), aber leider nicht im Opera sowie im IE.
document.getElementsByTagName('table')[0].childNodes[0].childNodes[0].getAttribute('id')
Erste Tabelle, erster/einziger tbody-Tag, erste Zeile (erster TR-Tag), Attribute "id" des TR-Tags.
Wieso funktioniert das nicht bzw. wie kann ich das anders lösen?
Vielen Dank für eure Vorschläge.
Max
Hallo Max,
das Arbeitenj mit childNodes[0] ist in Tabellen nicht zu empfehlen. In einigen Browsern werden Zeilenumbrüche zwischen </tr> bzw. </tbody> und <tr> als Knoten gezählt. Versuch lieber den Weg über getElementsByTagName.
document.getElementsByTagName('table')[0].childNodes[0].childNodes[0].getAttribute('id')
document.getElementsByTagName('table')[0].getElementsByTagName('tr')[0].getAttribute('id')
Gruß, Jürgen
Hi,
document.getElementsByTagName('table')[0].childNodes[0].childNodes[0].getAttribute('id')
document.getElementsByTagName('table')[0].getElementsByTagName('tr')[0].getAttribute('id')
Ohne es konkret verifiziert zu haben: Da der IE Schwierigkeiten mit getAttribute hat, wenn es "native" Zugriffsmöglichkeiten gibt (getAttribute("class") und className ist so ein Fall), wäre hier ggf.
document.getElementsByTagName('table')[0].getElementsByTagName('tr')[0].id
vorzuziehen.
Gruß, Cybaer
Hallo Cybaer,
Diesen Weg bevorzuge ich auch. Mein Vorschlag war nur, wie auch der von wahsaga, auf childNodes zu verzichten und lieber getElementsByTagName zu nehmen. Den Rest habe ich einfach aus dem Code von Max übernommen.
Gruß, Jürgen
hi,
Ich muss die id einer Tabellenzeile auslesen.
Mit folgendem Code funktioniert es zwar im Firefox (1.0.6), aber leider nicht im Opera sowie im IE.document.getElementsByTagName('table')[0].childNodes[0].childNodes[0].getAttribute('id')
Erste Tabelle, erster/einziger tbody-Tag, erste Zeile (erster TR-Tag), Attribute "id" des TR-Tags.
Wieso funktioniert das nicht
liegt vermutlich daran, dass die geckos und IE unterschiedlicher meinung sind, ob zeilenumbrüche bzw. sonstiger whitespace ebenfalls knoten darstellen, oder nicht. (hab aber jetzt nur oberflächlich draufgeschaut, könnte auch was anderes sein.)
bzw. wie kann ich das anders lösen?
wende auf deine tabelle getElementsByTagName("tr") an.
in der zurückgelieferten collection ist das erste element (index 0) das erste <tr> in deiner tabelle.
gruß,
wahsaga
Hallo Max.
Ich muss die id einer Tabellenzeile auslesen.
Mit folgendem Code funktioniert es zwar im Firefox (1.0.6), aber leider nicht im Opera sowie im IE.
Du bist zwar nur einer unter vielen, aber: Wie oft muss denn noch gesagt werden, dass „funktioniert nicht“ keine Fehlerbeschreibung ist?
Welche Fehlermeldung erscheint? Zumindest im Opera bekommst du dank der JS-Konsole sogar eine aussagekräftige Fehlermeldung.
document.getElementsByTagName('table')[0].childNodes[0].childNodes[0].getAttribute('id')
Dir ist bewusst, dass Whitespaces (Leerzeichen, Tabulator, Zeilenumbruch, ...) in manchen Browsern ebenfalls als Kindknoten gelten?
Vielleicht solltest du besser mit rows arbeiten.
Einen schönen Dienstag noch.
Gruß, Ashura