Textfarbe per Javascript ändern
Andreas Ploch
- javascript
0 Axel Richter0 mbr0 Axel Richter0 Cybaer0 Axel Richter0 Cybaer
0 Andreas Ploch
Hallo zusammen,
ich bin kurz-vor-aus-dem-Fenster-springen. Folgendes - simples - Script verweigert im IE6 seinen Dienst und bringt nicht den erwünschten Effekt. Es soll lediglich die Textfarbe eines Abschnittes geändert werden.
Funktioniert auf dem Mac bei Safari / Firefox super - nur der Windows IE stellt sich mal wieder quer. Mache ich hier etwas falsch ?
<body>
<p id="abschnitt">Das ist nur ein Beispiel Text.</p>
<script language="javascript">
document.getElementById("abschnitt").setAttribute("style", "color:#FF0000");
document.getElementById("abschnitt").replaceChild("Das ist nur ein Beispiel Text.", document.getElementById("abschnitt").firstChild);
</script>
</body>
Live-Beispiel
http://www.ploch.de/test/test.htm
Es wäre sehr nett, wenn Ihr hier mal ein Auge drauf werfen könntet.
Vielen Dank,
Andreas
Hallo,
Es soll lediglich die Textfarbe eines Abschnittes geändert werden.
<body>
<p id="abschnitt">Das ist nur ein Beispiel Text.</p>
<script type="text/javascript">
document.getElementById("abschnitt").style.color = "#FF0000";
</script>
</body>
Was Du mit dem .replaceChild() erreichen wolltest, erschließt sich mir allerdings nicht.
viele Grüße
Axel
Hallo Andreas,
zunächst einmal hat dein Beispiel auch im FF einen Javascript Fehler. Den siehst du, wenn du die Javascript-Konsole öffnest. Die Methode replaceChild erwartet nämlich zwei Objekte vom Typ node (siehe hier)
Leider macht der IE auch dann nicht das gewünschte, wenn man diesen Fehler beseitigt hat ;-(
Die Zeile
document.getElementById("abschnitt").replaceChild("Das ist nur ein Beispiel Text.", document.getElementById("abschnitt").firstChild);
kann sogar komplett gestrichen werden und es funktioniert im FF trotzdem, im IE aber nicht.
Es funktioniert in beiden Browsern, wenn man es folgendermaßen schreibt:
document.getElementById("abschnitt").style.color="#FF0000";
document.getElementById("abschnitt").setAttribute("style", "Color:#FF0000;");
var knoten=document.createTextNode("Das ist nur ein (roter) Beispiel Text.");
document.getElementById("abschnitt").replaceChild(knoten, document.getElementById("abschnitt").firstChild);
(ich habe zusätzlich noch den Inhalt des Knotens geändert, um den Effekt zu verdeutlichen und zu zeigen, wie replaceChild richtig angewendet wird).
Liebe Grüße mbr
Hallo,
Es funktioniert in beiden Browsern, wenn man es folgendermaßen schreibt:
document.getElementById("abschnitt").style.color="#FF0000";
Das funktioniert auch in allen Browsern, die JavaScript beherrschen.
document.getElementById("abschnitt").setAttribute("style", "Color:#FF0000;");
Diese Zeile ist überflüssig.
viele Grüße
Axel
Hi,
document.getElementById("abschnitt").style.color="#FF0000";
Das funktioniert auch in allen Browsern, die JavaScript beherrschen.
Keineswegs. Das funktioniert in allen Browsern die JavaScript und das W3C-DOM beherrschen.. Korrekterweise muß es lauten:
if(document.getElementById) {
document.getElementById("abschnitt").style.color="#FF0000";
...
}
Gruß, Cybaer
Hallo,
Das funktioniert in allen Browsern die JavaScript und das W3C-DOM beherrschen.
Keineswegs. Die Methode document.getElementById ist DOM Level 1, wogegen die Eigenschaft HTMLElement.style in DOM Level 1 noch nicht existiert, sondern erst in DOM Level 2. Korrekterweise muss es also heißen:
if(document.getElementById) {
if (document.getElementById("abschnitt").style) {
document.getElementById("abschnitt").style.color = "#FF0000";
}
}
viele Grüße ;-)
Axel
Hi,
Korrekterweise muss es also heißen:
Theoretisch ein absolut berechtigter Einwand!
Praktisch betrifft das aber wohl nur bestimmte ältere Operas, die aber style wg. des von ihnen unterstützten IE-DOMs trotzdem beherrschen. :)
Gruß, Cy-"Ja, ich haben den Smiley gesehen ;-)"-baer
Danke für Eure Antworten und Lösungsvorschläge - sie funktionieren so wie gewüscht !
Ich beschäftige mich erst seit ein paar Tagen im Rahmen eines kleinen AJAX-Projektes für meine Webseite mit der DOM/Javascript-Programmierung.
Einiges war mir noch nicht so geläufig ......
Vielen Dank an alle Beteiligten.
Andreas