Inserting HTML elements with JavaScript
Instead of directly messing with innerHTML
it might be better to create a fragment and then insert that:
function create(htmlStr) {
var frag = document.createDocumentFragment(),
temp = document.createElement('div');
temp.innerHTML = htmlStr;
while (temp.firstChild) {
frag.appendChild(temp.firstChild);
}
return frag;
}
var fragment = create('<div>Hello!</div><p>...</p>');
// You can use native DOM methods to insert the fragment:
document.body.insertBefore(fragment, document.body.childNodes[0]);
Benefits:
- You can use native DOM methods for insertion such as insertBefore, appendChild etc.
- You have access to the actual DOM nodes before they're inserted; you can access the fragment's childNodes object.
- Using document fragments is very quick; faster than creating elements outside of the DOM and in certain situations faster than innerHTML.
Even though innerHTML
is used within the function, it's all happening outside of the DOM so it's much faster than you'd think...
You want this
document.body.insertAdjacentHTML( 'afterbegin', '<div id="myID">...</div>' );