Watching the number of nodes in Chrome DevTools, I'm wondering what the difference in the dom tree after clicking Button1 and it after clicking Button2.
index.html
<html>
<head>
<script src="./js/main.js" type="text/javascript" charset="utf-8"></script>
<link rel="stylesheet" href="style/default.css">
</head>
<body>
<div id="buttons">
<div class="button" id="button1">Execute1</div>
<div class="button" id="button2">Execute2</div>
</div>
<div id="main"></div>
<div id="main2"></div>
</body>
</html>
main.js
document.addEventListener( "DOMContentLoaded", function() {
var button1 = document.getElementById('button1');
button1.addEventListener('click', function() {
document.getElementById('main').innerHTML += '<div>hello</div>';
});
var button2 = document.getElementById('button2');
button2.addEventListener('click', function() {
var div = document.createElement('div');
div.appendChild(document.createTextNode('hello2'));
document.getElementById('main2').appendChild(div);
});
} );
default.css
#buttons {
display:-webkit-flex;
align-items: center;
}
.button {
height: 30px;
width: 100px;
margin: 5px;
background-color: #0080C0;
color: #FFFFFF;
display:-webkit-flex;
align-items: center;
justify-content: center;
cursor: pointer;
}
When I click the Button1, the number of nodes is incremented by 4.
But when I click the button2, the number of nodes is incremented by 2.
Be incrementing by 2 makes sense for me as they could be a 'div' element and a text node 'hello2'.
But clicking the Button1, what other nodes be appended?
As expected, appendChild works more efficiently when there is only one iteration in our loop. However, innerHTML quickly catches up in performance. Try calling test(5, 100) and innerHTML becomes the clear winner after just 5 iterations.
#1) createElement is more performant However, using the innerHTML causes the web browsers to reparse and recreate all DOM nodes inside the div element. Therefore, it is less efficient than creating a new element and appending to the div.
Element.append() can append several nodes and strings, whereas Node.appendChild() can only append one node.
innerText returns all text contained by an element and all its child elements. innerHtml returns all text, including html tags, that is contained by an element.
Using appendChild
adds a new DOM element to the end of the parent node.
Using innerHTML +=
takes the existing DOM content of the parent node, serialises it to HTML in a string, adds some more HTML to the end of the string, erases the existing elements in the parent node, generates DOM elements from that string, then appends the new nodes to the parent node.
Difference between innerHTML and appendChild Jquery / Javascript : What is the difference between innerHTML and appendChild?
Answer :
appendChild is used to insert new node in DOM. innerHTML is a property of DOM that allows to replace content of an element with different HTML, which automatically gets parsed into DOM nodes.
please_read_the link
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With