You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅使用原生JavaScript及Node API为指定元素节点包裹多层div元素

现有代码问题

  • 调用insertAdjacentHTML时传入了DOM元素作为参数,该方法仅支持接收HTML字符串,这一步无法实现预期的嵌套效果
  • appendChild方法只能接收1个DOM节点参数,同时传入两个节点的写法会导致第二个参数被直接忽略
  • 嵌套逻辑倒置:要实现给ul包裹两层div的效果,正确的层级顺序是「外层div → 内层div → ul」,原有写法没有按这个顺序嵌套元素

修复后实现代码

const firstOrder = document.createElement('div');
const secondOrder = document.createElement('div');
firstOrder.classList.add("someClass");
secondOrder.classList.add("random");
const targetUl = document.querySelector('.ul-0');
const theParentNode = document.querySelector('.main-nav');

// 按层级嵌套:ul放入内层div,内层div放入外层div
firstOrder.appendChild(targetUl);
secondOrder.appendChild(firstOrder);
// 把完整的嵌套结构放入父容器main-nav
theParentNode.appendChild(secondOrder);

执行后最终的DOM结构如下,原有ul内部的内容会完整保留:

<nav class="main-nav">
  <div class="random">
    <div class="someClass">
      <ul class="main-nav-list ul-0">
        <li class="a"> <a href="/">First</a>
            <ul class="main-nav-list">
                <li class="b"> <a href="/">Type of menu</a>
                    <ul class="main-nav-list">
                        <li class="c"> <a href="/">Summer</a> </li>
                        <li class="c"> <a href="/">Winter</a> </li>
                        <li class="c"> <a href="/">All season</a> </li>
                        <li class="c"> <a href="/">Spring </a> </li>
                    </ul>
                </li>
            </ul>
        </li>
      </ul>
    </div>
  </div>
</nav>

内容的提问来源于stack exchange,提问作者Script Host

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:39:02