haizlin / fe-interview

前端面试每日 3+1,以面试题来驱动学习,提倡每日学习与思考,每天进步一点!每天早上5点纯手工发布面试题(死磕自己,愉悦大家),6000+道前端面试题全面覆盖,HTML/CSS/JavaScript/Vue/React/Nodejs/TypeScript/ECMAScritpt/Webpack/Jquery/小程序/软技能……
http://www.h-camel.com
MIT License
25.31k stars 3.25k forks source link

[js] 第641天 写一个方法将一个html字符串变成JSON树的形式 #3445

Open haizhilin2013 opened 3 years ago

haizhilin2013 commented 3 years ago

第641天 写一个方法将一个html字符串变成JSON树的形式

3+1官网

我也要出题

LeoHongyi commented 3 years ago

function converter (element, json) { let res = {}

if (typeof element === 'string') {
   if (window.DOMParser) {
      parser = new DOMParser()
      docNode = parser.parseFromString(element, "text/xml")
   }
  element = docNode.firstChild

}

function treeHTML(element, object) { object[''type"] = element.nodeName var nodeList = element.childNode if (nodeList != null) { Object["content"] = [] for (var i = 0; i < nodeList.length; i++) { if (nodeList[i].nodeType == 3) { object["content"].push(nodeList[i].nodeValue) } else { object["content"].push({}) treeHTML(nodeList[i], object["content"][object["content"].length - 1) } } } } if (element.attributes != null) { if (element.attributes.length) { object["attributes"] = {} for (var i = 0; i < element.attributes.length; i++) { object["attributes"][element.attributes[i].nodeName] = element.attributes[i].nodeValue } } } treeHTML(element, treeObject); return (json) ? JSON.stringify(treeObject) : treeObject; }