ok~_~ok 2021-11-19 20:39 采纳率: 80%
浏览 41
已结题

如何使用递归把一个并不复杂的数据转化成这样的 DOM 结构?

要动态地渲染导航菜单,其中每个对象都对应一个菜单项,菜单项可以有子菜单,子菜单也可以有子子菜单。这样的数组结构如何转化成以下的 DOM 结构:

var data = [
  {title: 'menu 1'},
  {
    title: 'menu 2',
    children: [
      title: 'menu 2-1'
      children: [
        //
      ]
    ]
  }
]

<div class='tree'>
  <div class='tree-node'>
    <span class='node-title'></span>
  </div>
  <div class='node-children'>
    <div class='tree-node'>
      ...
    </div>
  </div>
</div>

我的思路大概是这样的,不限层级、具有相似结构的数据可以用递归实现,但写着写着写到一半做不下去了。 有啥办法在 initTree函数的大致框架下把功能实现吗?

<div class='menu'></div>

var container = document.querySelector('.menu')
function initTree(tree) {
  for(var i = 0; i <tree.length; i) {
    var objItem = tree[i] //取出每一个对象
    var node = document.createElement('div')
    node.classList.add('tree-node')
    //...

    if(objItem.children) {
      var childrenNode = document.createElement('div')
      childrenNode.classList.add('tree-children') 
      //...
      initTree(objItem.children)
    }
  }
  
}

  • 写回答

1条回答 默认 最新

  • 有问必答小助手 2021-11-22 10:19
    关注

    你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


    本次提问扣除的有问必答次数,已经为您补发到账户,我们后续会持续优化,扩大我们的服务范围,为您带来更好地服务。

    评论

报告相同问题?

问题事件

  • 系统已结题 11月27日
  • 修改了问题 11月19日
  • 创建了问题 11月19日

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看