题解 | #dom节点转成json数据#
dom节点转成json数据
http://www.nowcoder.com/practice/0340a0c6d11d4aadba0aef86e6ae723f
function dom2json() {
var conatiner = document.getElementById('jsContainer');
var res_zen = {};
function setAC(zen, res_zen) {
if (!res_zen.tag) {
res_zen.tag = zen.tagName.toLowerCase();
res_zen.attributes = {};
res_zen.children = [];
}
var nodes = Array.from(zen.childNodes);
var attrs = zen.attributes || [];
for (var i = 0; i < nodes.length; i++) {
var node_type = nodes[i].nodeType;
var node_name = nodes[i].nodeName;
if (node_type == 1) {
// 元素
var obj = {};
res_zen.children.push(setAC(nodes[i], obj));
} else if (node_type == 3) {
// 文本
var obj = {
tag: 'text',
content: nodes[i].nodeValue.trim(),
};
if (obj.content) {
res_zen.children.push(setAC(nodes[i], obj));
}
}
}
for (var i = 0; i < attrs.length; i++) {
// 属性
res_zen.attributes[attrs[i].nodeName] = attrs[i].nodeValue;
}
return res_zen;
}
return setAC(conatiner, res_zen);
}