/ [CSS] Denkblockaden und Klasseneigenschaften ändern
7ohan
- menschelei
1 Louis0 Daniel Thoma0 Struppi
0 Dracophagos
Hallo Kinder,
kennt ihr das? Man sitzt vor einem Problem, das eigentlich trivial zu sein scheint, aber irgendwo klemmt es mit der Lösung. Und dann schaut man in der entsprechenden Literatur nach, aber ist zu blind, um die Lösung zu finden. Was macht man da? Einen Spaziergang um den Block? Eine Runde Fernsehen? Die Wand anstarren? Hab ich probiert. Bringt nichts. Wie macht ihr das?
So ging es mir heute (was für eine Überleitung!), als ich versucht habe, für eine Klasse eine Eigenschaft per JavaScript zu ändern. Also z.B. per Klick auf einen Schalter eine Menge Sachen, die alle zu einer bestimmten Klasse gehören, anzuzeigen oder auszublenden (display:none;). So. Und nu? Wat nu? Ich bin nicht draufgekommen. Stöbern in SelfHTML brachte mir nur den Hinweis, wie ich die Klasse ändern könnte, wenn die einzelnen Elemente eine Klasse oder ID hätten. Also, wenn mir da jemand einen kleinen Denkanstoß geben könnte... das wär nett :-)
Leider kann ich euch jetzt weder den Quelltext noch einen Link präsentieren, es handelt sich bei der Datei um einen Kalender, in dem wir firmenintern Termine abstimmen, das Ding ist also nur in unserem lokalen Netzwerk vorhanden. (Ja, und jeder muß HTML lernen. Das hat sich aber als sicherer und benutzerfreundlicher erwiesen als Outlook und die ganze Scheiße!).
Vielleicht seh ich auch einfach den Wald vor lauter Bäumen nicht...
Beste Grüße
Johan
Hallo Kinder,
Hallo Papi
kennt ihr das? Man sitzt vor einem Problem, das eigentlich trivial zu sein scheint, aber irgendwo klemmt es mit der Lösung. Und dann schaut man in der entsprechenden Literatur nach, aber ist zu blind, um die Lösung zu finden. Was macht man da? Einen Spaziergang um den Block? Eine Runde Fernsehen? Die Wand anstarren? Hab ich probiert. Bringt nichts. Wie macht ihr das?
Kommt mir irgendwie bekannt vor.
So ging es mir heute (was für eine Überleitung!), als ich versucht habe, für eine Klasse eine Eigenschaft per JavaScript zu ändern. Also z.B. per Klick auf einen Schalter eine Menge Sachen, die alle zu einer bestimmten Klasse gehören, anzuzeigen oder auszublenden (display:none;). So. Und nu? Wat nu? Ich bin nicht draufgekommen. Stöbern in SelfHTML brachte mir nur den Hinweis, wie ich die Klasse ändern könnte, wenn die einzelnen Elemente eine Klasse oder ID hätten. Also, wenn mir da jemand einen kleinen Denkanstoß geben könnte... das wär nett :-)
Es ist ziemlich spät und nach dem Champagner bin ich auch nicht mehr so klar im Hirn: ich rate mal drauflos:
Suchst Du sowas wie document.getElementById aber für Klassen?
Das gibt's nicht, sondern nur zum Selberprogrammieren:
function getElementsByClass(class_name)
{
var all_obj, ret_obj=new Array(), j=0;
if( document.all )
all_obj=document.all;
else if( document.getElementsByTagName && !document.all )
all_obj=document.getElementsByTagName("*");
for( i=0; i<all_obj.length; i++)
{
if(all_obj[i].className==class_name)
{
ret_obj[j]=all_obj[i];
j++
}
}
eval( document.ret_obj );
return ret_obj;
}
Wars das? Naja, vielleicht hab ich Dich auch falsch verstanden, dann einen schönen Abend noch.
Louis
P.S: obige Funktion kannst Du z.B. so einbinden:
var elemente = getElementsByClass("meineklasse");
for (e=0; e<elemente.length; e++)
elemente[e].style.color = "#900"; // oder was du halt willst...
if( document.all )
all_obj=document.all;
else if( document.getElementsByTagName && !document.all )
Louis,
Wozu die nochmalige Abfrage auf document.all? Wenn du schon in dem else-Zweig bist, kann das gar nicht zutreffen.
Gunnar
if( document.all )
all_obj=document.all;
else if( document.getElementsByTagName && !document.all )
Wozu die nochmalige Abfrage auf document.all? Wenn du schon in dem else-Zweig bist, kann das gar nicht zutreffen.
Hallo Gunnar
öh - tatsächlich - naja, doppelt hält besser ;)
Gute Nacht
Louis
Hallo Louis,
if(all_obj[i].className==class_name)
Hier solltest Du berücksichtigen, dass className mehrere Klassennamen enthalten kann.
Grüße
Daniel
Hallo 7ohan,
So ging es mir heute (was für eine Überleitung!), als ich versucht habe, für eine Klasse eine Eigenschaft per JavaScript zu ändern. Also z.B. per Klick auf einen Schalter eine Menge Sachen, die alle zu einer bestimmten Klasse gehören, anzuzeigen oder auszublenden (display:none;).
Du willst also per JavaScript die Eigenschaften einer CSS-Klasse ändern?
Das geht mit:
var cssRules = document.styleSheets[0].cssRules;
for(var i = 0; i < rules.length; i++) {
if(rules[i].selectorText == "." + className) {
rules[i].style.display = "none";
break;
}
}
Der Code ist ungetestet. In Geckos sollte der auf jeden Fall funktionierten, wie es mit andern Browser aussieht, musst Du ausprobieren.
Recht übersichtliche Dokumentation die auch das CSS-DOM beschreibt:
< http://www.mozilla.org/docs/dom/domref/>
Die W3C-Spezifikation:
http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113/
In Selfhtml ist das noch nicht dokumentiert.
Grüße
Daniel
var cssRules = document.styleSheets[0].cssRules;
for(var i = 0; i < rules.length; i++) {
if(rules[i].selectorText == "." + className) {
rules[i].style.display = "none";
break;
}
}Der Code ist ungetestet. In Geckos sollte der auf jeden Fall funktionierten, wie es mit andern Browser aussieht, musst Du ausprobieren.
Ich hatte vor längerem mal ein paar Funktionen geschrieben:
http://javascript.jstruebig.de/lib/css.html
Im IE heißt die Eigenschaft nicht cssRules sondern nur rules: http://msdn.microsoft.com/workshop/author/dhtml/reference/collections/rules.asp
Und hier noch der Link direkt auf die Mozilla cssRules Erläuterung.
http://www.mozilla.org/docs/dom/domref/dom_style_ref14.html#998514
Struppi.
Hallo Struppi,
Im IE heißt die Eigenschaft nicht cssRules sondern nur rules:
Ah, hier hat also wieder Microsoftsche Innovation zugechlagen...
Grüße
Daniel
document.getElementsByTagName('link')[n].setAttribute('href','ausblenden.css')
Hoffe geholfen haben zu können.