Max: ID einer Tabellenzeile auslesen

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

  1. 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

    1. 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

      --
      Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
      1. 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

  2. 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

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  3. 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

    --
    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]