Birte: CSS-Attribute aus einer Klasse in eine andere kopieren.

Liebe Leute

Nachdem ich kurz vor Weinkrämpfen (mit Schütteln und ersten Zuckungen) stehe, bitte ich hier um Hilfe, bevor ich den Freitod wähle.... :-)
Ich habe ein simples Stylesheet mit zunächst einmal 2 Einträgen wie hier zu sehen.

<style type="text/css">
<!--
.satz1 { background-color:#f0f0f0; .....}
.satz2 { background-color:#f0f0f0; .....}
//-->
</style>

Den Eintrag "Satz1" verändere ich nun dynamisch mit

document.styleSheets[0].rules[0].style.????? = wert;
bzw. für netscape
document.styleSheets[0].cssRules[0].style.????? = wert;

Auf diese Weise werden etliche Attribute gelegentlich verändert, klappt auch alles tadellos. Alle html-elemente, denen die Klassen zugeordnet sind verändern ihr aussehen, alles tip-top.

Aber folgendes will mir einfach nicht gelingen:
Ich möchte über ein Javascript in Satz2 ALLE Attribute aus Satz1
übernehmen, die beiden Klassen sollen danach also zunächst den
gleichen Inhalt haben, später werden dann in Satz2 einzelne
Attribute geändert. Das ist alles.

Wie zum Himmel kann ich also ALLE in Satz1 geführten Attribute in Satz2 übernehmen und zwar algorithmisch, damit ich nicht eine endlose Liste mit Zuweisungen eintippen muss? Sehe ich den Wald vor lauter Bäumen nicht mehr, oder bin ich nur zu dumm? :-(

Bitte helft mir....

Birte

  1. Wie zum Himmel kann ich also ALLE in Satz1 geführten Attribute in Satz2 übernehmen und zwar algorithmisch, damit ich nicht eine endlose Liste mit Zuweisungen eintippen muss? Sehe ich den Wald vor lauter Bäumen nicht mehr, oder bin ich nur zu dumm? :-(

    Keine Ahnung ;-)

    aber evtl. hilft dir for(var element in objekt) siehe http://selfhtml.teamone.de/javascript/sprache/schleifen.htm#for

    Struppi.

  2. Aber folgendes will mir einfach nicht gelingen:
    Ich möchte über ein Javascript in Satz2 ALLE Attribute aus Satz1
    übernehmen, die beiden Klassen sollen danach also zunächst den
    gleichen Inhalt haben, später werden dann in Satz2 einzelne
    Attribute geändert. Das ist alles.

    Wie zum Himmel kann ich also ALLE in Satz1 geführten Attribute in Satz2 übernehmen und zwar algorithmisch, damit ich nicht eine endlose Liste mit Zuweisungen eintippen muss?

    DOM CSS erlaubt meines Wissens keinen direkten Zugriff auf die Liste der Deklarationen einer Regel, nur den Umweg über .style.eigenschaft, den du ja kennst. style ist aber keine Collection mit allen vorhandene Deklarationen. Du kannst lediglich über .style.cssText alle Deklarationen als Textinhalt auslesen. Bei .klasse1 {color:red; background-color:white;} als erste Regel im ersten Stylesheet wäre das entsprechend:
      document.styleSheets[0].cssRules[0].style.cssText
    oder
      document.styleSheets[0].cssRules.item(0).style.cssText
    und für MSIE
      document.styleSheets[0].rules[0].style.cssText
    oder
      document.styleSheets[0].rules.item(0).style.cssText
    Das liefert eben »color:red; background-color:white;« bzw. »COLOR: red; BACKGROUND-COLOR: white« im MSIE.

    Wenn du jetzt eine zweite Regel hast, so müssten sich die Deklarationen einfach übertragen lassen:
      document.styleSheets[0].cssRules[1].style.cssText=document.styleSheets[0].cssRules[0].style.cssText;
    bzw.
      document.styleSheets[0].rules[1].style.cssText=document.styleSheets[0].rules[0].style.cssText;
    Getestet in MSIE 6 und Firebird 0.7.
    Dann kannst du einzelne Eigenschaften der zweiten Regel wie gewohnt über .style.eigenschaft ändern.