How to get the HTML for a DOM element in javascript
Imagine I have the following HTML:
<div><span><b>This is in bold</b></span></div>
I want to get the HTML for the div, including the div itself. Element.innerHTML only returns:
<span>...</span>
Any ideas? Thanks
Solution 1:
Use outerHTML
:
var el = document.getElementById( 'foo' );
alert( el.outerHTML );
Solution 2:
Expanding on jldupont's answer, you could create a wrapping element on the fly:
var target = document.getElementById('myElement');
var wrap = document.createElement('div');
wrap.appendChild(target.cloneNode(true));
alert(wrap.innerHTML);
I am cloning the element to avoid having to remove and reinsert the element in the actual document. This might be expensive if the element you wish to print has a very large tree below it, though.
Solution 3:
First, put on element that wraps the div
in question, put an id
attribute on the element and then use getElementById
on it: once you've got the lement, just do 'e.innerHTML` to retrieve the HTML.
<div><span><b>This is in bold</b></span></div>
=>
<div id="wrap"><div><span><b>This is in bold</b></span></div></div>
and then:
var e=document.getElementById("wrap");
var content=e.innerHTML;
Note that outerHTML
is not cross-browser compatible.
Solution 4:
old question but for newcomers that come around :
document.querySelector('div').outerHTML