输出见控制台
DOM结构
<div>
<span>
<a></a>
</span>
<span>
<a></a>
<a></a>
</span>
</div>
JSON格式
{
tag: 'DIV',
children: [
{
tag: 'SPAN',
children: [
{ tag: 'A', children: [] }
]
},
{
tag: 'SPAN',
children: [
{ tag: 'A', children: [] },
{ tag: 'A', children: [] }
]
}
]
}
解一:注意DOM结构需要去除所有空格,否则会产生多余Text节点。
function dom2json(dom, json = {}) {
json.tag = dom.tagName;
json.children = [];
dom.childNodes.forEach(child => json.children.push(dom2json(child)));
return obj;
}
https://juejin.cn/post/6844904122559250440
马特·弗里斯比. JavaScript高级程序设计:第4版,P419.