Adding text to an existing text element in JavaScript via DOM

JavascriptDom

Javascript Problem Overview


I am trying to figure how to add text to a p tag or h1 tag that already has a text node.

For example:

var t = document.getElementById("p").textContent; var y = document.createTextNode("This just got added");

t.appendChild(y);

This is some text

This code gives an error appendChild is not a function. Most of the help pages first create a p tag and then append the text.

What is the right way to add text to an existing text element?

PS: I've used innerHTML before to do this, but for learning purposes I want to avoid it here.

Javascript Solutions


Solution 1 - Javascript

The reason that appendChild is not a function is because you're executing it on the textContent of your p element.

You instead just need to select the paragraph itself, and then append your new text node to that:

var paragraph = document.getElementById("p"); var text = document.createTextNode("This just got added");

paragraph.appendChild(text);

This is some text

However instead, if you like, you can just modify the text itself (rather than adding a new node):

var paragraph = document.getElementById("p");

paragraph.textContent += "This just got added";

This is some text

Solution 2 - Javascript

Instead of appending element you can just do.

 document.getElementById("p").textContent += " this has just been added";

document.getElementById("p").textContent += " this has just been added";

<p id ="p">This is some text</p>

Solution 3 - Javascript

What about this.

var p = document.getElementById("p")
p.innerText = p.innerText+" And this is addon."

<p id ="p">This is some text</p>

Solution 4 - Javascript

The method .appendChild() is used to add a new element NOT add text to an existing element.

Example:

var p = document.createElement("p");
document.body.appendChild(p);

Reference: Mozilla Developer Network

The standard approach for this is using .innerHTML(). But if you want a alternate solution you could try using element.textContent.

Example:

document.getElementById("foo").textContent = "This is som text";

Reference: Mozilla Developer Network

How ever this is only supported in IE 9+

Solution 5 - Javascript

remove .textContent from var t = document.getElementById("p").textContent;

var t = document.getElementById("p");
var y = document.createTextNode("This just got added");

t.appendChild(y);

<p id ="p">This is some text</p>

Solution 6 - Javascript

   <!DOCTYPE html>
   <html>
   <head>
   <script   src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
  <script>
  $(document).ready(function(){
   $("#btn1").click(function(){
    $("p").append(" <b>Appended text</b>.");
   });

  });
 </script>
  </head>
 <body>

 <p>This is a paragraph.</p>
  <p>This is another paragraph.</p>



 <button id="btn1">Append text</button>


</body>
</html>

Solution 7 - Javascript

var t = document.getElementById("p").textContent;
var y = document.createTextNode("This just got added");

t.appendChild(y);

<p id="p">This is some text</p>

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionBenny ThadikaranView Question on Stackoverflow
Solution 1 - JavascriptJames MongerView Answer on Stackoverflow
Solution 2 - JavascriptDeepView Answer on Stackoverflow
Solution 3 - JavascriptDonii HohoView Answer on Stackoverflow
Solution 4 - JavascriptFrederick M. RogersView Answer on Stackoverflow
Solution 5 - JavascriptArkejView Answer on Stackoverflow
Solution 6 - JavascriptKaushar AlamView Answer on Stackoverflow
Solution 7 - Javascriptibrohim ZuhriddinovView Answer on Stackoverflow