如何整理基于JavaScript的HTML代码

如何整理基于JavaScript的HTML代码,javascript,html,indentation,Javascript,Html,Indentation,我正在编写一个JavaScript函数,它可以整理HTML代码(目前不需要整理JavaScript和CSS代码) 这是我的密码。检查一下 函数tidyHtml(html){ var html=html.trim()方法。您尝试过了吗。结果是在同一行中得到ABC。我希望它是ABC\n我不知道这可能是因为innerHTML,您可以尝试这些网站:并且您必须解析字符串以及IDE的真正代码编辑器。这不是一个好主意,使用多行的节点和元素,有更简单的方法吗?。注意:参数nt to.join()是单个制表符(此

我正在编写一个JavaScript函数,它可以整理HTML代码(目前不需要整理JavaScript和CSS代码)

这是我的密码。检查一下

函数tidyHtml(html){

var html=html.trim()方法。

您尝试过了吗。结果是在同一行中得到ABC。我希望它是ABC\n我不知道这可能是因为innerHTML,您可以尝试这些网站:并且您必须解析字符串以及IDE的真正代码编辑器。这不是一个好主意,使用多行的节点和元素,有更简单的方法吗?。注意:参数nt to
.join()
是单个制表符(此处显示为三个空格-复制粘贴以查看它)。
function tidyHtml(html) {
    var html = html.trim().replace(/>[^<]+</gm, function ($1) {
        return '>' + $1.substr(1, $1.length - 2).trim() + '<';
    }).replace(/>\s+</gm, '><');
    var containerElement = document.createElement('div');
    containerElement.innerHTML = html;
    var result = containerElement.innerHTML;
    var findLevel = function (child, parent) {
        var level = 0;
        while (child != parent) {
            child = child.parentNode;
            level++;
        }
        return level;
    }
    Array.prototype.slice.call(containerElement.getElementsByTagName('*')).forEach(function (element) {
        var tabs = new Array(findLevel(element, containerElement) - 1).join('   '),
            tabs2 = (element.parentNode.lastChild == element) ? ('\n' + tabs.substring(0, tabs.length - 1)) : '',
            containerElement = document.createElement('div');
        containerElement.appendChild(element.cloneNode(true));
        result = result.replace(containerElement.innerHTML, '\n' + tabs + containerElement.innerHTML + tabs2);
    });
    return result;
}
<div id="hlogo">
    <a href="/">Stack Overflow</a>ABC</div>
<div id="hlogo">
    <a href="/">Stack Overflow</a>ABC
</div>