2009-03-25 9 views
63

Gibt es eine Möglichkeit, den Wert eines DOM textNode im Webbrowser zu ändern?TextNode-Wert ändern

Ich möchte speziell sehen, ob ich kann Änderung der vorhandenen Knoten, anstatt eine neue zu erstellen.

Um zu verdeutlichen, muss ich dies mit Javascript tun. Der gesamte Text im Browser wird in # textNodes gespeichert, die untergeordnete Elemente anderer HTML-Knoten sind, aber keine eigenen untergeordneten Knoten haben können.

Wie unten beantwortet, kann Inhalt geändert werden, indem die Eigenschaft nodeValue dieser Objekte festgelegt wird.

+0

Beispiel für HTML & was möchten Sie ändern? Möchten Sie es mit Javascript tun? – shahkalpesh

Antwort

94

Wenn Sie einen bestimmten Knoten haben (vom Typ #text) und wollen den Wert ändern Sie die nodeValue Eigenschaft verwenden:

node.nodeValue="new value"; 

Hinweis:

Innertext (und möglicherweise textcontent) Gibt den aktuellen Knoten und den Text für alle untergeordneten Knoten zurück/setzt diesen Wert und ist daher möglicherweise nicht das gewünschte Verhalten.

+1

Ja, nodeValue ist perfekt dafür. InnerText und TextContent unterscheiden sich in dieser Hinsicht: IE (wer innerText erstellt hat) unterstützt es nicht auf #text-Knoten (da es keine untergeordneten Knoten zu textifizieren gibt), wohingegen textContent sowohl auf #Element- als auch auf #text-Knoten verwendet werden sollte. –

+4

Es gibt auch "Daten" als ein kurzes Synonym für "nodeValue" auf Text (sowie CDATASection und Kommentar). – bobince

+0

nodeValue ist derjenige, den ich brauchte. Aus irgendeinem Grund dachte ich, es wäre schreibgeschützt, aber scheint auf FF3 und IE7 zu arbeiten. Vielen Dank! – levik

-4

ich innerHTML- glauben wird dafür verwendet ... dann wieder, das ist nicht genehmigt W3C ... aber es funktioniert ...

node.innerHTML="new value"; 
+1

+1 für eine funktionierende Lösung. nodeValue lässt mich den Inhalt des Elements nicht ersetzen – petermeissner

+3

Sie sollten * nie * innerHTML verwenden, da es Code sowohl beim Lesen als auch beim Schreiben als Text behandelt. – John

+2

@petermeissner: Das beantwortet keine Frage. Sie müssen 'nodeValue' auf dem Textknoten setzen, nicht auf seinem Elternelement. –