程序笔记   发布时间:2022-07-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了原生table动态渲染树形结构数据大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <table border style="width: 500px;" cellspacing='0'>
    <thead>
      <tr>
        <th>1</th>
        <th>2</th>
        <th>3</th>
        <th>4</th>
      </tr>
    </thead>
    <tbody id="tbody"></tbody>
  </table>
  <script>
    const tbody = document.getElementById('tbody');
    let data = [{
      name: "1",
      children: [{
          name: "1-1",
          children: [{
            name: "1-1-1",
            children: [{
              name: "1-1-1-1"
            }]
          }, {
            name: "1-1-2",
            children: [{
                name: "1-1-2-1"
              },
              {
                name: "1-1-2-2"
              }
            ]
          }, {
            name: "1-1-3",
            children: [{
                name: "1-1-3-1"
              },
              {
                name: "1-1-3-2"
              }, {
                name: "1-1-3-3"
              }
            ]
          }]
        },
        {
          name: "1-2",
          children: [{
            name: "1-2-1",
            children: [{
              name: "1-2-1-1"
            }]
          }]
        }
      ]
    }];
    function setRowspan(arr = [], p = null) {
      arr.forEach((item, index) => {
        if (item.children && item.children.length > 0) {
          setRowspan(item.children, item);
          item.rowspan = item.children.reduce((pre, next) => {
            pre += next.rowspan || 1;
            return pre;
          }, 0);
        }
        item.idx = index;
        item.p = p;
      });
    }
    setRowspan(data);
    function createTable(arr = []) {
      arr.forEach((item, index) => {
        if ((item.children && item.children.length > 0)) {
          createTable(item.children);
          if (item.p && index === 0) {
            item.str = item.children.reduce((pre, next) => {
              return (pre += next.str);
            }, `<td rowspan="${item.rowspan}">${item.name || ""}</td>`);
          } else {
            item.str = item.children.reduce((pre, next) => {
              return (pre += next.str);
            }, `<tr><td rowspan="${item.rowspan}">${item.name || ""}</td>`);
          }
        } else {
          item.str = "";
          if (index !== 0) {
            item.str = `<tr>`;
          }
          item.str += `
            <td>${item.name}</td>
            </tr>
          `;
        }
      });
    }
    createTable(data)
    let str = '';
    data.forEach(item => {
      str += item.str
    })
    tbody.innerHTML = str
  </script>
</body>
</html>
 
效果:
 

原生table动态渲染树形结构数据

 

 

大佬总结

以上是大佬教程为你收集整理的原生table动态渲染树形结构数据全部内容,希望文章能够帮你解决原生table动态渲染树形结构数据所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: