最近刚学TypeScript,贴一个TypeScript和一个JavaScript,请大佬们多多指正
function dom2json() { let test = document.getElementById("jsContainer"); return dfs(test!); } type TextType = { tag: "text", content: string }; type MyType = { tag: string, attributes:Record<string, string>, children: (MyType|TextType)[] } function dfs(node: HTMLElement) { if(node.nodeType === Node.ELEMENT_NODE) { let attributes: Record<string, string> = {}; for(let i = 0; i < node.attributes.length; ++i) { attributes[`${node.attributes[i].nodeName}`] = `${node.attributes[i].nodeValue}` } let child = Array.from(node.childNodes).filter((v)=> { return v.nodeType === Node.ELEMENT_NODE || (v.nodeType === Node.TEXT_NODE && v.nodeValue!.trim() !== ''); }) let ret:MyType = { "tag": node.nodeName.toLowerCase(), attributes, "children": child.map((v) => { return dfs(v as HTMLElement); }) }; return ret; } else { let ret:TextType = { "tag": "text", "content": node.nodeValue!.trim() } return ret; } }
function dom2json() { var test = document.getElementById("jsContainer"); return dfs(test); } function dfs(node) { if (node.nodeType === Node.ELEMENT_NODE) { var attributes = {}; for (var i = 0; i < node.attributes.length; ++i) { attributes["".concat(node.attributes[i].nodeName)] = "".concat(node.attributes[i].nodeValue); } var child = Array.from(node.childNodes).filter(function (v) { return v.nodeType === Node.ELEMENT_NODE || (v.nodeType === Node.TEXT_NODE && v.nodeValue.trim() !== ''); }); var ret = { "tag": node.nodeName.toLowerCase(), attributes: attributes, "children": child.map(function (v) { return dfs(v); }) }; return ret; } else { var ret = { "tag": "text", "content": node.nodeValue.trim() }; return ret; } }