Andy1407: Ermitteln der Spaltenbreite einer nicht fest definierten Spalte

Hallo zusammen,

ich versuche gerade die Breite einer bestimmten Spalte zu ermitteln.

Meine erste Tabelle hab' ich wie folgt gebaut:
  <table>
    <tr>
      <th id='tabelle1_spalte_1'>Spalte 1</TH>
      <th id='tabelle1_spalte_2'>Spalte 2</TH>
      <th id='tabelle1_spalte_3'>Spalte 3</TH>
    </tr>
  </table>

Im Prinzip funktioniert das ja so:
  document.getElementById('tabelle1_spalte_1').style.width

Wenn ich die Spaltenbreite aber nicht fest zuweise, dann steht da leider nichts drin... (Hab das schon ausprobiert)

Kann mir jemand einen Tipp geben wie ich trotzdem an die momentan verwendete Breite komme?

Ich will eigentlich nur zwei Tabellen haben, die eine am Anfang meiner HTML-Seite und die andre am Ende.
Über ein Javascript soll die Breite der ersten Spalte der Tabelle 1 der ersten Spalte der Tabelle 2 zugewiesen werden :)

Kann mir da jemand weiterhelfen?

Schon mal vielen Dank und Gruß

Andy

  1. Mahlzeit,

    Wenn ich die Spaltenbreite aber nicht fest zuweise, dann steht da leider nichts drin... (Hab das schon ausprobiert)

    Natürlich nicht.

    Kann mir jemand einen Tipp geben wie ich trotzdem an die momentan verwendete Breite komme?

    Stichwort "computedStyle" - entweder hier in der Forumssuche oder bei Google verwenden.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Hallo EKKI,

      danke, ich werd mir das mal anschaun :)

      Gruß
      Andy

      Mahlzeit,

      Wenn ich die Spaltenbreite aber nicht fest zuweise, dann steht da leider nichts drin... (Hab das schon ausprobiert)

      Natürlich nicht.

      Kann mir jemand einen Tipp geben wie ich trotzdem an die momentan verwendete Breite komme?

      Stichwort "computedStyle" - entweder hier in der Forumssuche oder bei Google verwenden.

      MfG,
      EKKi

      1. Mahlzeit,

        danke, ich werd mir das mal anschaun :)

        Wenn Du grad dabei bist: schau Dir auch mal an, warum TOFU nicht besonders gern gesehen ist. :-)

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. Malzeit EKKi,

          hab' zwar erst mal überlegen müssen was TOFU ist (dachte erst was zu essen) aber ok...

          Die Idee von Suit funktioniert fast einwandfrei: http://forum.de.selfhtml.org/?t=170215&m=1112351

          Gruß
          Andy

  2. Im Prinzip funktioniert das ja so:
      document.getElementById('tabelle1_spalte_1').style.width

    nein, damit liest du den definierten wert für width aus

    Wenn ich die Spaltenbreite aber nicht fest zuweise, dann steht da leider nichts drin... (Hab das schon ausprobiert)

    ja, weil du ja das ausliest, was rein geschrieben ist

    Ich will eigentlich nur zwei Tabellen haben, die eine am Anfang meiner HTML-Seite und die andre am Ende.
    Über ein Javascript soll die Breite der ersten Spalte der Tabelle 1 der ersten Spalte der Tabelle 2 zugewiesen werden :)

    layout oder inhaltstabellen?

    Kann mir da jemand weiterhelfen?

    offsetWidth sollte dir helfen

    1. Hallo suit,

      leider verstehe ich nicht ganz in wie weit mit offsetWidth da weiterhelfen soll...

      wenn ich es mit
        alert(document.getElementById('tabelle1_spalte_1').style.offsetWidth);
      versuche, dann bekomme ich die Meldung 'undefined'.

      Ich will eigentlich nur zwei Tabellen haben, die eine am Anfang meiner HTML-Seite und die andre am Ende.
      Über ein Javascript soll die Breite der ersten Spalte der Tabelle 1 der ersten Spalte der Tabelle 2 zugewiesen werden :)
      layout oder inhaltstabellen?

      tabellen mit inhalten

      Gruß
      Andy

      Im Prinzip funktioniert das ja so:
        document.getElementById('tabelle1_spalte_1').style.width

      nein, damit liest du den definierten wert für width aus

      Wenn ich die Spaltenbreite aber nicht fest zuweise, dann steht da leider nichts drin... (Hab das schon ausprobiert)
      ja, weil du ja das ausliest, was rein geschrieben ist

      Ich will eigentlich nur zwei Tabellen haben, die eine am Anfang meiner HTML-Seite und die andre am Ende.
      Über ein Javascript soll die Breite der ersten Spalte der Tabelle 1 der ersten Spalte der Tabelle 2 zugewiesen werden :)
      layout oder inhaltstabellen?

      Kann mir da jemand weiterhelfen?
      offsetWidth sollte dir helfen

      1. wenn ich es mit
          alert(document.getElementById('tabelle1_spalte_1').style.offsetWidth);
        versuche, dann bekomme ich die Meldung 'undefined'.

        kein wunder - hast du auch schon mal ansatzweise versucht, irgend eine dokumentation zu lesen oder betreibst du experimentelles javascript?

        http://de.selfhtml.org/javascript/objekte/all.htm#offset_width

        1. kein wunder - hast du auch schon mal ansatzweise versucht, irgend eine dokumentation zu lesen oder betreibst du experimentelles javascript?

          Ja, ich hab schon mal in der Doku gelesen, aber den Abschnitt hab ich leider nicht gefunden...

          Hat aber auch nicht so wirklich funktioniert...

          Ich erhlate die richten Werte und kann diese auch setzen.
          Aber nach dem setzen entspricht der gesetzte Wert nicht dem ermitteltem...

          Zur Zeit versuch ich das unter Verwundung deines offsetWidth:
          <---
            width_spalte1 = document.all.table1_spalte1.offsetWidth; if (width_spalte1 <= document.all.table2_spalte1.offsetWidth) { width_spalte1 = document.all.table2_spalte1.offsetWidth; }

          alert("Dump: " + width_spalte1 + " - Table1: " + document.all.table1_spalte1.offsetWidth + " - Table2: " + document.all.table2_spalte1.offsetWidth);
            document.getElementById('table2_spalte1').style.width=width_spalte1;
            document.getElementById('table1_spalte1').style.width=width_spalte1;
            alert("Dump: " + width_spalte1 + " - Table1: " + document.all.table1_spalte1.offsetWidth + " - Table2: " + document.all.table2_spalte1.offsetWidth);
          <---

          Bei jedem Aufruf der Funktion liefert mit offsetWidth andre Werte, aber das müssten doch die selben sein :(

          Gruß
          Andy

          1. Yerf!

            Bei jedem Aufruf der Funktion liefert mit offsetWidth andre Werte, aber das müssten doch die selben sein :(

            Hm, haben deine Tabellenzellen Rahmen oder Padding? OffsetWidth stammt von MS und rechnet mit deren (falschen) Boxmodell, d.h. es liefert die Breite *inklusive* Rahmen und Padding. style.width bezieht sich dagegen (außer bei einem IE im Quirks-Mode) nur auf den Inhalt.

            Wobei... dein Code sieht sehr stark nach einem IE im Quirks-Mode aus... document.all und keine Einheit bei den Werten für style.width

            Gruß,

            Harlequin

            --
            <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->