ВнешнийHTML - это HTML элемента, включая сам элемент. В отличие от innerHTML элемента, это HTML, содержащийся в открывающем и закрывающем тегах элемента. По определению, элементы без открывающего и закрывающего тегов не имеют innerHTML.
Используйте outerHTML, когда вы хотите полностью заменить элемент и его содержимое. Используйте innerHTML, когда вы хотите заменить только содержимое элемента.
function getHTML(node){
if(!node || !node.tagName) return '';
if(node.outerHTML) return node.outerHTML;
// polyfill:
var wrapper = document.createElement('div');
wrapper.appendChild(node.cloneNode(true));
return wrapper.innerHTML;
}
outerHTML
изначально был нестандартным свойством элемента в Internet Explorer, но теперь имеет кроссбраузерную поддержку. Оно возвращает HTML элемента и его дочерних элементов. Для элементов, имеющих родителей, оно может быть установлено для замены элемента и его потомков.