JavaScript 遍历文档生成目录结构

 JavaScript 遍历文档生成目录结构

要遍历 HTML 文档并生成目录结构,你可以使用 JavaScript 来进行 DOM 操作和遍历。以下是一个简单的示例代码,演示了如何遍历文档中的标题元素(例如 <h1><h2><h3> 等),并根据它们的层次结构生成目录:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document Outline</title>
</head>
<body><!-- 示例文档 --><h1>Heading 1</h1><p>This is some content under Heading 1.</p><h2>Subheading 1.1</h2><p>This is some content under Subheading 1.1.</p><h2>Subheading 1.2</h2><p>This is some content under Subheading 1.2.</p><h3>Sub-subheading 1.2.1</h3><p>This is some content under Sub-subheading 1.2.1.</p><h1>Heading 2</h1><p>This is some content under Heading 2.</p><h2>Heading 2.1</h2><p>This is some content under Heading 2.</p><h1>小沈阳</h1><p>天下第二也挺好</p>
</body>
<script>
window.onload = function() {// 获取文档的所有标题元素var headings = document.querySelectorAll('h1, h2, h3, h4, h5, h6');// 创建一个用于存储目录结构的数组var outline = [];// 遍历标题元素headings.forEach(function(heading) {// 获取标题的文本内容和级别var title = heading.textContent;var level = parseInt(heading.tagName.charAt(1));// 将标题信息存储到目录结构数组中outline.push({ level: level, title: title });// 创建一个链接元素,用于跳转到标题所在位置var link = document.createElement('a');link.textContent = title;link.href = '#' + heading.id;// 创建一个列表项元素,并将链接添加到其中var listItem = document.createElement('li');listItem.appendChild(link);// 根据标题级别确定应该添加到哪个列表中var listContainer;if (level === 1) {listContainer = document.createElement('ul');document.body.appendChild(listContainer);} else {listContainer = outline[outline.length - 2].listContainer;}listContainer.appendChild(listItem);// 将当前列表容器存储到目录结构数组中,以备后用outline[outline.length - 1].listContainer = listContainer;});
};
</script>
</html>

在这个示例中,我们首先使用 document.querySelectorAll 方法获取文档中的所有标题元素。然后,我们遍历这些标题元素,并根据其级别创建对应的目录结构。最后,我们将生成的目录添加到文档中的某个容器元素中。

需要注意的是,这只是一个简单的示例,可能无法覆盖所有情况。在实际应用中,你可能需要根据具体的需求对代码进行调整和扩展。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/465620.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

antdpro框架npm install 报错,切换tyarn安装成功。

报错日志 有时间补 当前版本 解决办法 进入工作目录 安装官方推荐的tyarn工具&#xff1a;npm install yarn tyarn -g 进行依赖安装&#xff1a;tyarn 启动项目 &#xff1a;tyarn start 注意&#xff1a; 技术迭代较快&#xff0c;建议查询官网后实践&#xff0c;以上作为…

WSL下如何使用Ubuntu本地部署Vits2.3-Extra-v2:中文特化修复版(新手从0开始部署教程)

环境&#xff1a; 硬&#xff1a; 台式电脑 1.cpu:I5 11代以上 2.内存16G以上 3.硬盘固态500G以上 4.显卡N卡8G显存以上 20系2070以上 本案例英伟达4070 12G 5.网络可连github 软&#xff1a; Win10 专业版 19045以上 WSL2 -Ubuntu22.04 1.bert-Vits2.3 Extra-v2:…

【MySQL进阶之路】好友推荐系统索引设计实战

欢迎关注公众号&#xff08;通过文章导读关注&#xff1a;【11来了】&#xff09;&#xff0c;及时收到 AI 前沿项目工具及新技术的推送&#xff01; 在我后台回复 「资料」 可领取编程高频电子书&#xff01; 在我后台回复「面试」可领取硬核面试笔记&#xff01; 文章导读地址…

VMware虚拟机安装openEuler系统(二)(2024)

下面我们进行openEuler系统的一些简单配置。 1. 开启openEuler系统 在VMware Workstation Pro虚拟机软件中找到安装好的openEuler操作系统虚拟机并开启。 等待开启。 2. 安装配置 进入后选择第一个“Install openEuler 20.03-LTS”。 3. 选择系统语言 为虚拟机设置系统语言…

《统计学简易速速上手小册》第5章:回归分析(2024 最新版)

文章目录 5.1 线性回归基础5.1.1 基础知识5.1.2 主要案例&#xff1a;员工薪资预测5.1.3 拓展案例 1&#xff1a;广告支出与销售额关系5.1.4 拓展案例 2&#xff1a;房价与多个因素的关系 5.2 多元回归分析5.2.1 基础知识5.2.2 主要案例&#xff1a;企业收益与多因素关系分析5.…

【数学建模】【2024年】【第40届】【MCM/ICM】【D题 五大湖的水位控制问题】【解题思路】

一、题目 &#xff08;一&#xff09; 赛题原文 2024 ICM Problem D: Great Lakes Water Problem Background The Great Lakes of the United States and Canada are the largest group of freshwater lakes in the world. The five lakes and connecting waterways const…

Ajax+JSON学习一

AjaxJSON学习一 文章目录 前言一、Ajax简介1.1. Ajax基础1.2. 同源策略 二、Ajax的核心技术2.1. XMLHttpRequest 类2.2. open指定请求2.3. setRequestHeader 设置请求头2.4. send发送请求主体2.5. Ajax取得响应 总结 前言 一、Ajax简介 1.1. Ajax基础 Ajax 的全称是 Asynchron…

C++ dfs状态的表示(五十三)【第十三篇】

今天我们将来求解N皇后问题。 1.N皇后问题 N 皇后问题是一个经典的问题,在一个 NN 的棋盘上放置 N 个皇后,每行刚好放置一个并使其不能互相攻击(同一行、同一列、同一斜线上的皇后都会自动攻击)。 上图就是一个合法的 8 皇后的解。 N 皇后问题是指:计算一共有多少种合法的…

游泳佩戴耳机会对耳朵有危害吗?什么样的耳机适合游泳时佩戴

游泳佩戴耳机会对耳朵造成危害吗&#xff1f;答案并不绝对&#xff0c;关键在于选择什么样的耳机。如果使用的是普通耳机或者防水性能不高的蓝牙耳机&#xff0c;在水中使用时&#xff0c;水可能会进入耳机内部&#xff0c;导致耳机损坏&#xff0c;甚至引发中耳炎等耳部疾病。…

MySQL-运维

一、日志 1.错误日志 错误日志是MySQL中最重要的日志之一&#xff0c;它记录了当mysql启动和停止时&#xff0c;以及服务器在运行过程中发生任何严重错误时的相关性息。当数据库出现任何故障导致无法正常使用时&#xff0c;建议首先查看此日志。 该日志是默认开启的&#xf…

Linux---网络套接字

端口号 端口号 端口号是一个2字节16位的整数; 端口号用来标识一个进程, 告诉操作系统, 当前的这个数据要交给哪一个进程来处理; IP地址 端口号能够标识网络上的某一台主机的某一个进程; 一个端口号只能被一个进程占用 在公网上&#xff0c;IP地址能表示唯一的一台主机&…

分享66个时间日期JS特效,总有一款适合您

分享66个时间日期JS特效&#xff0c;总有一款适合您 66个时间日期JS特效下载链接&#xff1a;https://pan.baidu.com/s/1niQUpDSs10gfGYKYnEgKRg?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;…