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

使用JavaScript的forEach操作DOM生成页面目录不生效问题求助

你写的代码主要存在3个问题:

  • 循环中直接赋值innerHTML会覆盖之前插入的内容,遍历完成后目录里只会保留最后一个h2的条目
  • 直接插值heading变量会把DOM元素对象转为字符串,显示为[object HTMLHeadingElement],而非你想要的标题文本
  • a标签href属性为空,点击无法跳转到对应标题位置

修正后的可运行代码

const h2List = document.querySelectorAll('h2');
const toc = document.querySelector('#toc');
// 先拼接所有目录项HTML,减少DOM操作次数提升性能
let tocHtml = '';

h2List.forEach((heading, index) => {
    // 给h2设置唯一id用于锚点跳转
    const headingId = `toc-h2-${index}`;
    heading.id = headingId;
    // 提取标题文本拼接目录项
    tocHtml += `<li><a href="#${headingId}">${heading.textContent}</a></li>`;
});
// 一次性写入完整目录内容
toc.innerHTML = tocHtml;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:27:04