Guten Tag,
Anlass ist die Antwort von Gunnar Bittersmann in einem anderen Thread:: "Der Fehler ist, überhaupt CSS-Eigenschaften direkt mit JavaScript zu ändern."
Der Anwendungsfall ist das hier schon mal diskutierte Problem mit großen HTML-Tabellen und fixierten Kopfzeilen: Fixierte Tabellen-Kopfzeile. Die Lösung soll aber so funktionieren, dass fixierte Kopf- und Fußzeilen und auch linke Spalten stehen bleiben, wenn die Tabelle an den jeweiligen Fensterrand des Browsers kommt. Beispiel: Beispiel für Tabellen mit fixierten Kopf- und Fußzeilen und Spalten.
So etwas funktioniert m.E. nur mit einem JavaScript-Listener - auch wenn ich die Diskussion bei Mozilla.org kenne: Die thead- und tfoot-Bereiche werden mit cloneNode() kopiert und dann je nach Bedarf angezeigt und positioniert. Zusätzlich müssen die Zellenbreiten manuell kopiert werden. Ich bin gerade dabei, das Ganze in hier zu beschreiben: Arbeitsstand zu fixierten Kopfzeilen etc..
Jetzt zu meinem Problem: Ich bekomme das nur vernünftig hin, wenn ich konsequent in die .style-Attribute der kopierten Nodes schreibe:
- Anders bekomme ich die Zellenbreiten nicht stabil kopiert. Es geht nur, wenn ich style.maxWidth und style.minWidth gleichzeitig setze.
- Die Lösung soll in der Anwendung einfach und frei von Nebeneffekten sein. Ein einfaches new TabellenHeader("Tabellen-ID"); soll reichen, um das Ganze in Gang zu bringen.
Deshalb meine Frage: Was spricht dagegen, dynamisch ermittelte Werte in .style-Attributen zu setzen? Ich habe ja, Gunnar sei Dank, verstanden, dass ich besser das hidden-Attribut verwende, um die Anzeige zu steuern (statt style.display). Aber in den anderen Fällen, inbesondere bei der Dimensionierung und Positionierung schein mir das Konzept bei den .style-Attributen ausgereifter und besser gepflegt. M.E. verändere ich auch keine Layout-Informationen, die in den CSS-Code gehören, sondern dynamisch erzeugte Elemente, die nur am hilfsweise am Bildschirm benötigt werden.
Aber ich lasse mich auch gern vom Gegenteil überzeugen.
Mit Dank und vielen Grüßen
Wilfried