Пока ваш код не осилил разобрать, уж слишком "почерк" не знакомый.
Но в библиотечку добавлю.
А пока вот свою "версию" придумал.
Интересно мнение специалиста
onload = function(){ document.body.innerHTML = viewHtml(document.body) }
function viewHtml(obj){
var res = "<table style='border-collapse: collapse; margin: 0 auto; width: 100%;'>";
f(obj)();
return res + "</table>";
function f(elm){
elm.t = elm.parentNode.t ? (elm.parentNode.t + " — ") : ' — ';
var i, chi = elm.children, len = elm.children.length;
return function(){
var tg,id,cl,st;
for(i = 0; i < len; i++) {
tg = chi[i].tagName.toLowerCase();
id = (id = chi[i].getAttribute('id')) ? "#" + id : '';
cl = (cl = chi[i].getAttribute('class')) ? '.' + cl.replace(/\s/g, '.') : '';
st = " style='font-family: courier new; height: 1em; border-bottom: 1px solid #f0f0f0;'";
res += "<tr><td" + st + ">" + elm.t + tg + id + cl + "</td></tr>";
f(chi[i])();
}
}
delete elm.t;
}
}