CSS-Attribute aus einer Klasse in eine andere kopieren.
Birte
- javascript
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
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.
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.