Mit Javascript CSS Klasse per Laufzeit ändern

Alain Aubert

Legendäres Mitglied
Wenn ich z.B.
CODE <div id='aa' class='class1'>...</div>

<script>
document.getElementById('aa').className = 'asfd';
</script>

den Klassenname ändere dann funktioniert das und es wird auch gerendert. Ähnlich einfach kann ich das per Link auslösen.

Wenn es aber in komplexere Umgebungen eingebunden ist, dass funktioniert zwar das Überschreiben der Klassen Namen, aber die Elemente werden nicht gerendert, d.h. in ClassName steht zwar class2, aber es hat noch immer die Eigenschaften und das Aussehen von class1.

Ich vermute, dass Mozilla das halt schon gerendert hat, und nicht - wie im einfachen dreizeitigen Testfile - mal eben die Klassen neu rendert.

Aha, nein, es liegt daran, dass es neben dem class Attribut kein Style Attribut geben darf. Irgendeine Javascript Funktion verändert bei mir den Style und ab dann geht es nicht mehr.

Man kann elem.style.removeAttribute() bzw mit elem.style.attribute = "" den Style einzelner Elemente auf Null setzen, bevor man ClassName ändert. So kann man das Problem lösen, wenn man weiss, welche Style möglicherweise gesetzt sind.

Aha, bin wieder zufrieden.
Zwar hab ich mein Problem soweit - ganz überraschend - gelöst, aber gibt es eine Möglichkeit den style (welcher nur getter hat) global einfach mal auf null zu setzen. So document.getElementById('aa').style = Null oder so wäre nett...?
 
Alain, ich verstehe Dich irgendwie mal wieder nicht richtig...


Hier mal etwas, was Dir vielleicht helfen könnte. Ich schätze mal einfach, dass die erste deklarierte Klasse erst gelöscht werden muss, bevor Du die anderen hinzufügst. Natürlich gibt es bei jedem Browser mit JavaScript erhebliche unterschiede bei der Ausführung, dass durfte ich heute auch wieder mehrmals festellen.
Notfalls einfach alle CSS-Attribute per JavaScript so umsetzen, dass das gewünschte Ergebnis eintrifftt, auch wenn das keine schöne Lösung darstellen magt, nur diese ist leider kaum möglich, dafür müssten sich alle Browser schon strikt an einen Standard halten.

MfG Sascha Ahlers
 
Zurück
Oben