<!DOCTYPE html>
<html>
<body>
<div id='cont'>
<p> Hello world :-) </p>
</div>
<p>
<input type='button' id='bt' value='Click it' onclick='addHTML(cont)' />
</p>
</body>
<script>
let addHTML = (ele) => {
ele.innerHTML = '<p>Hello, I am Arun Banik</p>';
}
</script>
</html>Click the Try it button to see how it works.
I have a <div> element inside the <body> tag and a button. The <div> has a <p> element with a text "Hello world :-)". When you click the button, it adds a new HTML code to the DIV element, overwriting the old value or text.
The innerHTML attribute adds an "HTML code". Look carefully, the string "Hello, I am Arun Banik" is inside the <p> </p> tags. This makes it an HTML code. Its not a plain text.
Remember: innerHTML attribute is different from innerText attribute. If you want to add plain text to an element, then you must use the innerText attribute like this.
ele.innerText = 'Hello, this is a test.';
Events Listeners will be Lost
And also remember, the above code will replace the previous HTML code with a new HTML code. Any event listener attached to the previous code will also be lost. Everything will be new. See this example.
<!DOCTYPE html>
<html>
<body>
<div id='cont'>
// The P element has a listner attached to it. See the script.
<p id='pEle'>
Hello world :-)
</p>
</div>
<p>
<input type='button' id='bt'
value='Click it' onclick='addHTML(cont)' />
</p>
</body>
<script>
// Add a listener.
document.getElementById('pEle').addEventListener("click", say_hi);
function say_hi() {
alert('hi');
}
let addHTML = (ele) => {
ele.innerHTML += '<p>Hello, I am Arun Banik</p>';
}
</script>
</html>The <p> element in the above example is clickable. Since, I have added an Event Listener to it. However, when I am adding a new HTML code to the <div>, the listener is lost. An entirely new code is added.
In-addition, If you want to keep the previous HTML code(s) and add some new HTML code(s) to the <div> element, you can concatenate the values, like this.
<script>
let addHTML = (ele) => {
ele.innerHTML += '<p>Hello, I am Arun Banik</p>';
}
</script>