Neue Höhe in einer Tabellenzeile mit 'offsetHeight'

Issy

Mitglied
Hallo miteinander,

ich habe mal wieder ein Problem mit dem IE 6:

Ich lese in mehreren Tabellen die Höhe einer Zeile aus:
Code:
tr.offsetHeight
Dann ermittle ich die größte Höhe und setze alle Zeilen der verschiedenen Tabellen auf diese Höhe:
Code:
tr.style.height = tableLayoutMax[trCount++]+"px";

Das TD-Element innerhalb der TR-Elemente hat ein Padding von 4px jeweils nach Oben und Unten.

Nun mein Problem:
Der IE 6 setzt die Höhe irgendwie falsch.
Lese ich im ersten Codeschnipsel die Höhe aus, ist sie beispielsweise 50. Diese setzte ich neu (2. Schnipsel). Lese ich nun die Höhe aus TR erneut aus, dann erhalte ich 58 (50 + 2 x 4) - die Zeile ist im das Padding zu hoch.

Im Firefox funktioniert das prima. Auch im IE 6 Quirks-Modus ist die Höhe danach noch die gleiche. Aber diesen Modus möchte ich nicht verwenden.

Hat von euch jemand eine Idee, wie das im IE funktiniert, ohne eine Fallunterscheidung zu machen und gegebenenfalls das Padding von der Höhe für den IE abzuziehen?

Vielen Dank!

Issy
 
Du könntest, nach dem einstellen der Höhe, diese noch einmal überprüfen und demenstprechend neu einstellen.
Aber eine einfache Browserweiche wäre wohl schneller geschrieben.

zb:
Code:
 var newHeight = tableLayoutMax[trCount++];
if (window.innerHeight == 'undefined') newHeight -= 8;
tr.style.height = newHeight + "px";
 
Jo, das wäre eine Möglichkeit.

Andererseits, wenn dies alles irgendwo in einer JavaScript-Funktion stattfindet und ich an der Stelle den Wert für das TD-Padding nicht kenne (Wüsste nicht, wie ich das erhalte wenn es in einem CSS gesetzt ist.), dann liegt es auch Nahe es zweimal zu setzen. Beim 1. Mal ermittle ich die Differenz und beim 2. Mal setze ich es neu, mit Abzug der entsprechenden Differenz.

Am Liebste wäre mir jedoch eine Lösung, die das Problem gar nicht erst aufwirft.
 
Zuletzt bearbeitet:
Bin mir jetzt nicht sicher ob das funktioniert, währ nur mal ne Idee. :)

Schon mal mitm Attribut height probiert? (sollte sich nicht vom padding etc beeinflussen lassen)

lg
 
Leider das gleiche Ergebnis. Aus irgendeinem Grund ist die ausgelesene bzw. dargestellte Höhe eine andere, als die zugewiesene Höhe.
 
Hi,

wenn Du die padding-Werte mit CSS zuweist, könntest Du mal versuchen, diese Werte
im IE mit currentStyle auszulesen.

In meinem Beispiel habe ich angenommen, dass die Tabellenzeile, welche die Höhe vorgibt,
die ID rowID hat.
Code:
var intHeight = parseInt(document.getElementById("rowID").offsetHeight);
if (document.all && !window.opera)
  intHeight -= (parseInt(document.getElementById("rowID").getElementsByTagName("td")[0].currentStyle["paddingTop"]) + parseInt(document.getElementById("rowID").getElementsByTagName("td")[0].currentStyle["paddingBottom"]));
Ciao
Quaese
 
Quaese hat gesagt.:
Code:
var intHeight = parseInt(document.getElementById("rowID").offsetHeight);
if (document.all && !window.opera)
  intHeight -= (parseInt(document.getElementById("rowID").getElementsByTagName("td")[0].currentStyle["paddingTop"]) + parseInt(document.getElementById("rowID").getElementsByTagName("td")[0].currentStyle["paddingBottom"]));

Das klappt ganz gut & werde ich vorerst auch verwenden. ;)

Leider hab ich da keine Garantie für zukünftige IE-Versionen. Aber im IE 7 tritt dieser Bug auch auf, so dass ich mir darüber erst einmal keine Gedanken machen muss.

Vielen Dank für die ganzen Vorschläge.

Gruß Issy.
 

Neue Beiträge

Zurück