Moin,
setProperty() fügt leider nur eine Styleangebe zum Element dazu anstatt die Angaben im StyleElement zu ändern. Contenteditable funktioniert zwar aber leider zu manuell.
Weitere Details zu meiner Frage finden sich auf der Testseite. Gibt es eine Alternative?
dazu hat Matthias schon ein paar sachdienliche Hinweise gegeben.
Von mir noch ein Best Practise: Auch wenn man mit Javascript Style-Angaben manipulieren kann, sei es direkt am Element oder global im Stylesheet, halte ich das nicht für eine gute Idee. Ich empfehle stattdessen, mit Javascript Elementeigenschaften zu verändern (z.B. eine Klasse hinzufügen/wegnehmen, eventuell auch an einem Vorfahrenelement), so dass CSS auf diese Änderung reagieren und abweichende Regeln anwenden kann.
So muss ich bei einer Änderung des Stylesheets wirklich nur den CSS-Code durchsuchen, und nicht auch noch den Javascript-Code (separation of concerns).
Kann JS eigentlich immer noch nicht auf Dezimalstellen runden?
AFAIK nein. Es gibt Math.round() und Math.floor(), die runden aber nur auf ganze Zahlen. Zum Runden auf eine beliebige Stelle bleibt also nur der uralte Trick: Durch eine Zehnerpotenz dividieren, dann runden, dann wieder mit derselben Zehnerpotenz multiplizieren:
x = 100 * Math.round(x/100); // round to hundreds
Entsprechend für das Runden auf eine bestimmte Zahl von Nachkommastellen.
Soll nur der gerundete Wert für die Ausgabe formatiert werden, kommt auch noch Number.toFixed() in Frage. Damit kann man einen Zahlenwert auf eine bestimmte Dezimal-Stellenzahl formatieren - aber nicht auf Stellenwerte >1, also z.B. Hunderter.
Außerdem verlässt Number.toFixed() den Bereich der Zahlen und liefert einen String. Das kann problematisch sein, wenn man mit dem gerundeten Wert weiterrechnen muss.
Ist mir nur aufgefallen, weil ich immer noch eine alte Funktion von mir dazu nutze, aber vermute mal nach den ganzen Jahren, müsste JS das auch von Haus aus können?
Wär schön, ja.
Live long and pros healthy,
Martin
Früher war ich klein und dumm. Inzwischen hat sich so manches geändert. Ich bin größer geworden.