Day 41 of #100daysofjs

HTML Insertion Methods

HTML Insertion Methods

In HTML, there are several ways to insert new content or modify existing content dynamically using JavaScript. These are known as HTML insertion methods.

Consider the following HTML:

<!DOCTYPE html>
<html>
<head>    <title>Lesson 43</title></head>
<body>    
<div class="container">    
    <div id="first">I am first element</div>  
  </div>   
 <script src="script.js"></script>
</body>
</html>

Classic Way to Insert HTML

A classical way to insert HTML is by using the innerHTML property. For example, let's say we want to add an h1 element with the text "Hello World" inside the first div. We can do this using the following code:

let a = document.getElementsByTagName('div')[0];
a.innerHTML = '<h1>Hello World</h1>';

We could also append new HTML to the existing HTML inside the div element. For example:

let a = document.getElementsByTagName('div')[0];
a.innerHTML = a.innerHTML + '<h1>Hello World</h1>';

This will retain the old content and add a new h1 element.

Using createElement to Insert HTML

Another way to insert HTML is by creating an element using createElement method and then appending it to the target element using appendChild. For example, let's say we want to add an h1 element with the text "Hello World" inside the first div. We can do this using the following code:

let div = document.createElement('div');
div.innerHTML = '<h1>Hello World</h1>';
a.appendChild(div);

This will create a new div element and add an h1 element with the text "Hello World" inside it as a child element of the first div.

Other HTML Insertion Methods

Let's modify the previous HTML code to the following:

<html>
<head>
    <title>Lesson 43</title>
</head>
<body>
I am outside div (start)
<div class="container">
    I am start of this container
        <div id="first">I am first element</div>
    I am  end of this container
</div>
I am outside div(end)
    <script src="script.js"></script>
</body>
</html>
  • a.append(div): This will append the div element as the last child of the a element. In our case, it will add the div element as a child of the first div.

  • a.prepend(div): This will add the div element as the first child of the a element. In our case, it will add the div element as the first child of the first div.

  • a.before(div): This will add the div element before the a element. In our case, it will add the div element before the first div.

  • a.after(div): This will add the div element after the a element. In our case, it will add the div element after the first div.

  • a.replaceWith(div): This will replace the a element with the div element. In our case, it will replace the first div with the div element.

All of these methods can be used to modify the HTML content dynamically using JavaScript. Here is the complete code, comment out the code you don't want to run and test the results:

// Using innerHTML
let a = document.getElementsByTagName('div')[0];
a.innerHTML = '<h1>Hello World</h1>';
// Using createElement and appendChild
let div = document.createElement('div');
div.innerHTML = '<h1>Hello World (append)</h1>';
a.appendChild(div);
// Using prepend
let div = document.createElement('div');
div.innerHTML = '<h1>Hello World (prepend)</h1>';
a.prepend(div);
// Using before
let div = document.createElement('div');
div.innerHTML = '<h1>Hello World (before)</h1>';
a.before(div);
// Using after
let div = document.createElement('div');
div.innerHTML = '<h1>Hello World (aftwe)</h1>';
a.after(div);
// Using replaceWith
let div = document.createElement('div');
div.innerHTML = '<h1>Hello World (replaced)</h1>';
a.replaceWith(div);

Summary

HTML insertion methods allow us to add, remove or replace HTML elements and content dynamically using JavaScript. These methods include innerHTML, createElement, appendChild, prepend, before, after, and replaceWith. We can choose the appropriate method depending on our specific use case and requirements.

Did you find this article valuable?

Support Arpan Mukherjee's Blogs by becoming a sponsor. Any amount is appreciated!