Tag durch replace hinzufügen
cstyler
- javascript
Hallo ich versuche gerade ein Script zu schreiben, welches bestimmte Wörter hervorhebt.
Wenn ich aber nun mit replace versuche einen Tag zum HtmlText hinzuzufügen schreibt er den Tag sichtbar und ohne sonstige Veränderung.
Der Code sieht folgendermaßen aus:
<script>
function cp(){
var layer1=document.getElementById("neu");
layer1.childNodes[0].nodeValue=layer1.childNodes[0].nodeValue.replace("neu1", "<span>neu1</span>");
}
</script>
<div id="neu" onMouseOver="cp();">
neu1 123456 test
</div>
Yerf!
layer1.childNodes[0].nodeValue=layer1.childNodes[0].nodeValue.replace("neu1", "<span>neu1</span>");
Du greifst hier auf einen textNode zu, folglich wird der neue nodeValue als reiner Text interpretiert. Entweder erzeugst du einen neuen Node, den du als Childnode einfügst oder aber du benutzt layer1.innerHTML (letzteres dürfte leichter einzubauen sein).
Gruß,
Harlequin
Hallo,
Hallo ich versuche gerade ein Script zu schreiben, welches bestimmte Wörter hervorhebt.
Wenn ich aber nun mit replace versuche einen Tag zum HtmlText hinzuzufügen schreibt er den Tag sichtbar und ohne sonstige Veränderung.
das Verhalten der Browser ist korrekt, da Du den Wert einer textNode (childNode[0] hat in dem Fall Type 3) im DOM veränderst.
Dir stehen zwei Möglichkeiten offen:
[ ] Es soll einfach realisiert werden -> innerHTML
[ ] Es soll durch DOM realisiert werden -> nodeValue, removeChild(), createElement() && createTextNode(), appendChild()
Gruß aus Berlin!
eddi
Vielen Dank für die schnelle und ausführliche Antwort.
Ich sollte mich mit dem Thema lieber noch etwas ausführlicher beschäftigen, bevor ich mit den Anwendungen beginne.
Mit freundlichen Grüßen
Re:
Ich sollte mich mit dem Thema lieber noch etwas ausführlicher beschäftigen, bevor ich mit den Anwendungen beginne.
Jedenfalls weißt Du, wo Du Hilfe bekommst. ;)
Gruß aus Berlin!
eddi