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

导航栏与侧边菜单无法同时加载相同后端返回链接如何解决

问题根源

同一个DOM元素不能同时存在于文档的两个位置。调用appendChild()方法插入已存在于DOM树中的元素时,浏览器不会复制该元素,而是直接将它从原有父节点剪切到新的父节点下。你先把链接插入导航栏,再插入侧边栏的操作,本质是把导航栏里的链接直接移到了侧边栏,所以导航栏看不到加载的链接。

修复方案

你可以通过克隆DOM节点的方式生成两份完全相同的链接,分别插入两个组件,修改后的JS代码如下:

const categories = categoriesData.items;

const list = document.getElementById("listAnchor");
const navbar = document.getElementById("navAnchor");

categories.forEach((element) => {
  // 创建导航栏用的链接
  const navLink = document.createElement("a");
  navLink.setAttribute("href", "//localhost:8888");
  navLink.textContent = element.name;
  navbar.appendChild(navLink);
  
  // 深拷贝一份完全相同的链接给侧边栏使用
  const sideLink = navLink.cloneNode(true);
  const listItem = document.createElement("li");
  list.appendChild(listItem).appendChild(sideLink);
});

其他优化建议

  • 纯文本内容赋值优先用textContent代替innerHTML,可以避免XSS注入风险,性能也更好
  • 不需要重新赋值的变量统一用const声明,代码可靠性更高
  • 后续如果需要给这些动态生成的链接加统一样式或者交互,可以给它们加上相同的类名,批量操作更方便

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 13:45:03