Kann Zellenbreite nicht setzen
Kalle_B
- javascript
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
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
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
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
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