dynamisches Layout per CSS (Javascript gesteuert)?
Karfau
- javascript
Ich möchte, dass bestimmte Links
(gekennzeichnet durch <a id="cc" style="color:#FF0000">blink-txt</a>)
auf ein onMouseOver/-Out eines Textstücks
(abgegrenzt durch <b onMouseOver="blink();">over-out-text</b>)
die Farbe wechseln.
Da ist mir die Frage in den Sinn gekommen ob es möglich ist, per Javascript auf die datei-weiten CSS einstellungen zuzugreifen.
Eine Antwort ist mir darauf leider nicht eingefallen.
Meine Lösung wäre in der function blink() mit einer while-Schleife alle Elemente per getElementsById('cc') zu durchlaufen um Eigensschaften zu verändern.
Da ich aber bemerkt habe das es die Funktionen getElementsBy... im Netscape 4.75 anscheinend nicht gibt, wollte ich so mal nach ner besseren Möglichkeit suchen.
<intro>
Hallo!
</intro>
<message>
Da ist mir die Frage in den Sinn gekommen ob es möglich ist, per Javascript auf die datei-weiten CSS einstellungen zuzugreifen.
Wenn Du die Klassendefinitionen selber meinst: weiß ich nicht genau, könnte gehen, diese mit Javascript neu/modifiziert in das Dokument zu schreiben, aber da solltest Du Dir zu Risiken Und Nebenwirkungen ausführlicheren Rat einholen.
Meine Lösung wäre in der function blink() mit einer while-Schleife alle Elemente per getElementsById('cc') zu durchlaufen um Eigensschaften zu verändern.
Die styles einzelner Elemente direkt zu ändern ist dagegen überhaupt kein Problem, Beispiel:
getElementsById('cc').style.visibility="visible";
dito für andere Style-Eigenschaften, wie z.B. in SELFHTML beschrieben.
</message>
<outro>
Gruß
Roland
</outro>
Moin wieder.
Ich muß ja zugeben das ich das alles nicht ganz verstanden hatte.
Das kann ich im nachhinein sagen.
ich löse das jetzt so:
<code>
function blinck(Stop){
for(var i = 0; i < document.getElementsByTagName("td").length; i++) {
if(document.getElementsByTagName("td")[i].id == "cc"){
if(document.getElementsByTagName("td")[i].style.borderColor == "#ffffff"){
document.getElementsByTagName("td")[i].style.borderColor = "#0000FF";
}else{
document.getElementsByTagName("td")[i].style.borderColor = "#ffffff";
}
}
}
Stop+="_";
if(Stop.length < 5 ){
window.setTimeout("blinck('"+Stop+"')",100);
}
}
</code>
damit blinken dann alle Rahmen mit der eigenschaft id="cc" 2 mal (blau/weiss) beim Aufruf mit onMouseOver="blinck(' ');"
So gefällts mir, und natürlich gibts "getElementsById" nicht!!!
es gibt "getElementById" aber "getElementsByTagName" und "-sByName".
Wie sie funktionieren ist tatsächlich (nein, eigentlich kein Wunder) in SELFHTML erklärt:
.../javascript/objekte/document.htm
und auch wie man auf die styles zugreifen kann gibts:
.../javascript/objekte/style.htm
Naja, ich war wohl irgendwie beim Suchen etwas zu blöd.
Kann ja jedem mal passieren...
Danke trotzdem für die Hilfe!
Moin wieder.
Hallo Karfau,
for(var i = 0; i < document.getElementsByTagName("td").length; i++) {
if(document.getElementsByTagName("td")[i].id == "cc"){
if(document.getElementsByTagName("td")[i].style.borderColor == "#ffffff"){
document.getElementsByTagName("td")[i].style.borderColor = "#0000FF";
}else{
document.getElementsByTagName("td")[i].style.borderColor = "#ffffff";
}
}
}
Uhhh.. wenn ich Browser wäre, würde ich's vielleicht auch richtig interpretieren, aber falsch isses trotzdem (auch wenn's geht).
IDs sind nun mal eindeutig, die allgemeine Variante ist class. Was sagt denn der Validator zu Deiner Lösung?
Korrekterweise solltest Du
So gefällts mir, und natürlich gibts "getElementsById" nicht!!!
es gibt "getElementById"
Jau, dieses kleine s hatte ich in Deinem ursprünglichen Posting übersehen!
Gruß
Rols
Hi,
Ich möchte, dass bestimmte Links
(gekennzeichnet durch <a id="cc" style="color:#FF0000">blink-txt</a>)
wirklich mehrere mit ein und derselben ID?
mit einer while-Schleife alle Elemente per getElementsById('cc') zu durchlaufen
Scheint wirklich so zu sein, daher der Hinweis: eine ID kann nur einmalig vergeben werden. Es macht somit auch keinen Sinn, mehrere IDs in einer Schleife ansprechen zu wollen.
Da ich aber bemerkt habe das es die Funktionen getElementsBy... im Netscape 4.75 anscheinend nicht gibt
Funktioniert getElementsById() denn überhaupt in einem Browser? Denke an die Einmaligkeit von IDs und sehe Dir Deine Schreibweise dieser Anweisung einmal genauer an; findest Du den Widerspruch?
freundliche Grüße
Ingo