4

If I have a

var t = document.createTextNode(text)
parent.appendChild(t);

Is it possible to simply update the contents of t?

I would like to change the text inside the parent without using removeChild, createTextNode and appendChild. Why would I need this instead of just using innerHTML? Because I don't want to update the contents of the element with HTML code and the text may contain special characters, such as < or & which should be parsed by TextNode's DOM methods.

Thanks,
Tom

2
  • Do you want to display actual HTML or really just plain text? Commented May 5, 2009 at 9:15
  • I want to change the text inside parent and make it appear as plain text (ie, have the DOM replace < with &lt;). Commented May 5, 2009 at 9:26

4 Answers 4

11

Be aware that adjacent text nodes are collapsed into one (since there is really no way to distinguish two adjacent text nodes).

The contents of a text node can be updated using it's nodeValue property (see MDC).

Since a text node by it's very definition cannot contain any markup, there is no innerHTML property.

Sign up to request clarification or add additional context in comments.

1 Comment

Perfect :) Just what i'm looking for
2

If you keep the instance of the TextNode object (t in your example code) then you can change the content using various functions like replaceData(), substringData(), etc..

See this page for a nice reference: http://msdn.microsoft.com/en-us/library/ms535905(VS.85).aspx#

Comments

2
parent.innerText = text;

2 Comments

That's an alternative, of cause. I thought you were asking about text nodes specifically.
"I would like to change the text inside the parent" probably wasn't specific enough to say that I don't care how, I just want something very simple that will use the DOM to escape HTML.
0

Below example code overwrites the "Old Value" of the text node with the "New Value".

const textNode = document.createTextNode("Old Value");
parent.appendChild(textNode);

textNode.nodeValue = "New Value";

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.