美文网首页前端让前端飞前端开发那些事儿
算法二:DOM - 将DOM节点元素转换成JSON字符串

算法二:DOM - 将DOM节点元素转换成JSON字符串

作者: 张中华 | 来源:发表于2021-02-08 07:53 被阅读0次

题目:
将DOM节点元素转换成JSON的格式
例如

<div class="root">
     <div class="child1"><p></p></div>
    <span></span>
     <div><div><p></p></div></div>
    <p></p>
</div>

转换显示成(简写,大致表达个意思):
{"tagName":"DIV", className="root", childs:[{"tagName":"DIV", className="root",childs:[]}]}

乍一看上去并不是很难,递归,找出各个节点的child节点即可,可真正当场写出代码还是需要锻炼锻炼,反正我当时没写出来,课后补习:
试一试:http://jsrun.net/VPaKp/edit
HTML File:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=, initial-scale=">
    <meta http-equiv="X-UA-Compatible" content="">
    <title></title>
</head>
<body>
    <div class="root">
        <div class="child1"><p></p></div>
        <span class="span1"><span></span></span>
        <div><div><p class="p1"></p></div></div>
        <p><span></span></p>
    </div>
</body>
</html>

JS File:

function convertToJson() {
    const root = document.getElementsByClassName('root')[0];
    const output = new Object();
    output.tagName = root.tagName;
    output.className = root.className;
    output.childs = getChilds(root);

    console.log(JSON.stringify(output));
}

function getChilds(node) {
    const childs = node.children;
    const result = new Array();
    if(!childs || childs.length === 0) return result;
    for (const child of childs) {
        const childOutput = new Object();
        childOutput.tagName = child.tagName;
        childOutput.className = child.className;
        childOutput.childs = getChilds(child);
        result.push(childOutput);
    }
    return result;
}
convertToJson();

运行结果:
{"tagName":"DIV","className":"root","childs":[{"tagName":"DIV","className":"child1","childs":[{"tagName":"P","className":"","childs":[]}]},{"tagName":"SPAN","className":"span1","childs":[{"tagName":"SPAN","className":"","childs":[]}]},{"tagName":"DIV","className":"","childs":[{"tagName":"DIV","className":"","childs":[{"tagName":"P","className":"p1","childs":[]}]}]},{"tagName":"P","className":"","childs":[{"tagName":"SPAN","className":"","childs":[]}]}]}

随便找了一个格式化的网站把json字符串格式化显示下:



在对比下HTML文件目录:

    <div class="root">
        <div class="child1"><p></p></div>
        <span class="span1"><span></span></span>
        <div><div><p class="p1"></p></div></div>
        <p><span></span></p>
    </div>

就是这么回事。目前就是想到这个方法了,至于是不是最优就不得而知啦~

相关文章

  • 算法二:DOM - 将DOM节点元素转换成JSON字符串

    题目:将DOM节点元素转换成JSON的格式例如 转换显示成(简写,大致表达个意思):{"tagName":"DIV...

  • jS|DOM操作

    DOM节点的获取 DOM节点的创建 DOM节点删除 修改DOM元素 将指定两个DOM元素交换位置

  • DOM对象与字符串之间的转换

    字符串转换成DOM对象: DOM对象转换成字符串:

  • JSON库

    JSON库将json对象或节点转换成字典、将json数组转换成列表、将json字符串转换成python字符串,tr...

  • DOM (javascript DOM节点操作)

    DOM (javascript DOM节点操作) 本节目录 查找DOM元素 DOM节点操作 javascript操...

  • Element节点

    Element节点(网页的HTML元素.每个HTML元素在DOM数上都会转换成一个元素节点) 属性 Element...

  • jQuery(DOM篇)

    二、DOM篇 1. DOM创建节点及节点属性 (1) 创建元素节点:$(" ")(2) 创建为本节点:$(" 我...

  • jQuery的DOM操作

    一、创建节点 以HTML创建新元素 以jQuery创建新元素 以DOM创建新元素 二、插入节点 通过js的DOM操...

  • DOM的学习顺序

    1.DOM元素之间的关系 2.获取DOM元素 3.DOM节点的type、tag、content 4.DOM节点的a...

  • 2019-01-05

    封装 DOM 操作 DOM 将文档(页面结构)表示成一棵将树,树由元素节点,属性节点,文本节点组成,而 即是树...

网友评论

    本文标题:算法二:DOM - 将DOM节点元素转换成JSON字符串

    本文链接:https://www.haomeiwen.com/subject/lmaztltx.html