Kalle_B: Kann Zellenbreite nicht setzen

Hallöle,

ich habe eine Tabelle mit Daten und eine mit nur einer Zeile. Beide Tabellen haben die gleiche Spaltenzahl, aber die Spalten sind verschieden breit:

+-----+----------+----------+
|     |          |          |
+-----+----------+----------+

+---+-------+-------+
|   |       |       |
+---+-------+-------+

Ich bekomme es nicht hin, die Breite der Zellen der zweiten Tabelle einzustellen.

Mein Versuch:

  
function breite(breit) {  
  kt  = document.getElementById('p101_table_kopie');  
  ktr = kt.tHead.rows[0];                       // erste Head-Zeile der Kopie Tabelle  
  soll = (breit +2) +'px';  
alert( "alte Breite=["+ktr.cells[0].offsetWidth +"] Soll Breite=[" +soll +"]");  
  ktr.cells[0].style.width = soll;  
alert( "neue Breite=["+ktr.cells[0].offsetWidth +"]");  
}  

Anzeige:
alte Breite=[49] Soll Breite=[45px]
neue Breite=[51]

Die Tabelle ist so definiert:

  
table.liste {  
  border-collapse:  collapse;  
  empty-cells:      show;  
}  
table.liste td {  
  border:            1px solid #ccf;  
  padding:           0 0.2em 0 0.2em;  
  vertical-align:    top;  
}  

LG Kalle

  1. padding:           0 0.2em 0 0.2em;

    alte Breite=[49] Soll Breite=[45px]
    neue Breite=[51]

    offsetWidth = border-left + padding-left + width + padding-right + border-right
    1em = vermutlich 16px
    0.2em horizontales Padding = 3.2px = 3px
    Alte Gesamtbreite = 0 + 3px + 43px + 3px + 0 = 49px
    Neue width = 45px
    Neue Gesamtbreite = 0 + 3px + 45px + 3px = 51px

    Stimmt doch alles. Möglicherweise suchst du nicht offsetWidth mit padding und border drin, sondern willst mit getComputedStyle bzw currentStyle den gegenwärtigen width rauskriegen.

    Mathias

    1. Hallo, Matthias,

      Stimmt doch alles. Möglicherweise suchst du nicht offsetWidth mit padding und border drin, sondern willst mit getComputedStyle bzw currentStyle den gegenwärtigen width rauskriegen.

      Danke, das ist die Lösung.

      Kalle

  2. Hi,

    Hallöle,

    ich habe eine Tabelle mit Daten und eine mit nur einer Zeile. Beide Tabellen haben die gleiche Spaltenzahl, aber die Spalten sind verschieden breit:

    Warum sind das 2 Tabellen statt einer?

    Ich bekomme es nicht hin, die Breite der Zellen der zweiten Tabelle einzustellen.

    table-layout:fixed?

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. table-layout:fixed?

      Inwiefern kann table-layout:fixed hier helfen?

      Solange die Inhalte in die vorgegebenen Zellenbreiten hineinpassen, ist table-layout:auto meinem Verständnis nach ausreichend. Unerwünschte Effekte des automatischen Layoutalgorithmus gibts m.W. erst, wenn der Inhalt einer Zelle partout nicht in die vorgegebene Breite hineinpassen will - dann wird anderen Zellen etwas weggenommen. Und zwar denen, deren width gesetzt ist und deren maximal mögliche Inhaltsbreite (d.h. ohne Zeilenumbrüche) die Minimalbreite (die entspricht der gesetzten width) übersteigt, und denen, deren width nicht gesetzt ist und bei denen die Minimalbreite des Inhalts (beliebig viele Zeilenumbrüche, aber kein overflow) noch nicht erreicht ist. Es ist auch äußerst sinnvoll, dass der Browser in dem Fall eingreift, die Kontrolle übernimmt und ein paar Autorenstyles ignoriert. table-layout:fixed würde in dem Fall nämlich nur dazu führen, dass die Inhalte aus den Boxen laufen und sich überlappen. Welchen Sinn sollte das haben?

      Ich vermute ehrlich gesagt, dass die Allgemeinheit table-layout:fixed ungefähr genauso missversteht wie ich, und es daher fälschlicherweise als Lösung für bestimmte Probleme angesehen wird.

      Mathias