Hallo,
kann man mit JS direkt die Eigenschaften einer CSS-Class verändern, sodass sich das dann auf alle Elemente dieser Klasse auswirkt?
Über die Collection document.styleSheets (DOM Style) greifst du auf die Liste der mit dem Dokument verbundenen CSS-Dateien zu. Über die Collection cssRules (DOM CSS) bzw. rules (MSIE) sprichst du die Regeln an des Styleshets. Die Selektoren dieser Regel lassen sich über deren Eigenschaft selectorText auslesen. Die Regel, die du verändern willst, kannst du somit über den Selektor identifizieren (z.B. ».klasse«). Über .style.eigenschaft kannst du dann eine Deklaration in die Regel einfügen. Auf deutsch heißt das:
<style type="text/css">
.a {}
.b {}
.klasse {color:red;}
.c {}
.d {}
</style>
<script type="text/javascript">
if (document.styleSheets)
var ss=document.styleSheets[0];
else
ss=false;
if (ss.cssRules)
var rules=ss.cssRules;
else
if (ss.rules)
var rules=ss.rules;
if (rules)
for (i=0; i<rules.length; i++)
if (rules.item(i).selectorText=='.klasse') {
rules.item(i).style.color='blue';
break;
}
</script>
<p class="klasse">bla</p>
Funktioniert ab MSIE 5.x und im Gecko und KHTML.
Siehe auch:
http://www.w3.org/TR/DOM-Level-2-Style/stylesheets.html
http://www.w3.org/TR/DOM-Level-2-Style/css.html
http://www.mozilla.org/docs/dom/domref/dom_style_ref.html ff.
http://msdn.microsoft.com/workshop/author/dhtml/reference/collections/stylesheets.asp, http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/obj_stylesheet.asp ff.
http://www.styleassistant.de/tips/tip38.htm
http://www.quirksmode.org/dom/tests/stylesheets.html
http://www.quirksmode.org/dom/changess.html
Mathias