题解 | #设置标签#

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;
}


全部评论
+1
点赞 回复 分享
发布于 2021-08-23 09:47
+1
点赞 回复 分享
发布于 2022-10-07 20:42 浙江

相关推荐

object3:开始给部分🌸孝子上人生第一课了
点赞 评论 收藏
分享
2 收藏 评论
分享
牛客网
牛客企业服务