题解 | #设置标签#
dom节点转成json数据
http://www.nowcoder.com/practice/0340a0c6d11d4aadba0aef86e6ae723f
这题的测试机有问题,测试用例在浏览器中明明输出的是 true,它非得说我输出的是null
function dom2json() { let parentNode = document.querySelector("#jsContainer"); return getNodeJson(parentNode); } function getNodeJson(node){ let obj = {}; // obj.tag = node.nodeType == "3" ? "text" : node.tagName.toLowerCase(); // 【需求】5、纯文本也视为一个节点, json格式为 {tag: 'text', content: '文本内容'},content为文本内容执行trim后的结果,如果该结果为空,则忽略当前节点 if(node.nodeType == "3"){ if(!node.textContent.trim()) return; obj.tag = "text"; obj.content = node.textContent.trim(); }else{ obj.tag = node.tagName.toLowerCase(); obj.attributes = {}; obj.children = []; // 收集属性值 [...node.attributes].map(el=> { obj.attributes[el.name] = el.value; }) node.childNodes.forEach(item=>{ if(!getNodeJson(item)) return; obj.children.push(getNodeJson(item)); }) } return obj; }