如果你也想这么做,那么你还需要我的getElementByTagNames()函数。
这样的HTML标签,我也想让这些在ToC里面显示。我把这些新的链接添加在ToC的里面的上。
代码如下:
for (var i=0;ivar tmp = document.createElement('a');
tmp.innerHTML = toBeTOCced[i].innerHTML;
tmp.className = 'page';
z.appendChild(tmp);
如果标题是h4或者h5我就添加一个额外的类。
代码如下:
if (toBeTOCced[i].nodeName == 'H4')
tmp.className += ' indent';
if (toBeTOCced[i].nodeName == 'H5')
tmp.className += ' extraindent';
现在我们需要把a元素链接到他真正的标题上。这需要一个唯一的ID。然而,这些标题可能已经包含一个ID了。我不想破坏原有的内部链接,所以我更愿意使用标题本来的ID。只有当标题没有ID的时候我才创建一个新的ID。
代码如下: var headerId = toBeTOCced[i].id || 'link' + i;
我们刚刚创建的链接的href属性就应该是#+headerId,标题本身也就有了一个ID。
代码如下:
tmp.href = '#' + headerId;
toBeTOCced[i].id = headerId;
一个特殊情况:如果标题是H2,那就是页面的顶部,也会得到一个ID。
代码如下:
if (toBeTOCced[i].nodeName == 'H2') {
tmp.innerHTML = 'Top';
tmp.href = '#top';
toBeTOCced[i].id = 'top';
}
}
现在表格就生产了,我们返回给调用它的地方。
代码如下:return y;}
显示和隐藏ToC
最后这个函数用了显示和隐藏ToC。非常的简单,先检测ToC的状态,然后根据信息生产一个新的文本和display值。
代码如下:
var TOCstate = 'none';
function showhideTOC() {
TOCstate = (TOCstate == 'none') ? 'block' : 'none';
var newText = (TOCstate == 'none') ? 'show page contents' : 'hide page contents';
document.getElementById('contentheader').innerHTML = newText;
document.getElementById('innertoc').lastChild.style.display = TOCstate;
}
这个函数在用户点击的时候调用,那样他就可以切换ToC的显示。另外当用户在链接上点击的时候也会马上隐藏ToC的。
翻译地址:http://www.quirksmode.org/dom/toc.html
转载请保留以下信息
作者:北玉(tw:@rehawk)
写下你的评论吧 !
推荐阅读
-
本文提供了一种有效的方法来解决当Android Studio因电脑意外重启而导致的所有import语句出现错误的问题。通过清除缓存和重建项目结构,可以快速恢复开发环境。 ...
[详细]
蜡笔小新 2024-11-22 11:53:00
-
探讨如何在映射文件中处理重复的属性字段,以避免数据操作时出现错误。 ...
[详细]
蜡笔小新 2024-11-22 11:48:50
-
-
hlg_oj_1116_选美大赛这题是最长子序列,然后再求出路径就可以了。开始写的比较乱,用数组什么的,后来用了指针就好办了。现在把代码贴 ...
[详细]
蜡笔小新 2024-11-22 09:20:30
-
本文详细介绍了在未配置和已配置 Systemctl 的情况下启动 Nginx 的方法,并提供了详细的配置步骤和命令示例。 ...
[详细]
蜡笔小新 2024-11-22 08:08:56
-
最近与一位爱好中国古典文学的女孩交往,她分享了这样一首诗:‘钓日礁云共白头,也无荣辱也无忧;相逢话到投机处,山自青青水自流。’请问这首诗表达了什么样的情感或意图? ...
[详细]
蜡笔小新 2024-11-22 07:04:20
-
本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ...
[详细]
蜡笔小新 2024-11-22 05:45:48
-
本文介绍了如何通过安装 sqlacodegen 和 pymysql 来根据现有的 MySQL 数据库自动生成 ORM 的模型文件(model.py)。此方法适用于需要快速搭建项目模型层的情况。 ...
[详细]
蜡笔小新 2024-11-22 01:13:04
-
本文详细介绍了如何利用Xshell配合Xftp实现文件传输,以及如何使用Pure-FTPd构建FTP服务,并探讨了VSFTP与MySQL结合存储虚拟用户的方法。 ...
[详细]
蜡笔小新 2024-11-22 00:07:45
-
本文详细探讨了在Java中如何将图像对象转换为文件和字节数组(Byte[])的技术。虽然网络上存在大量相关资料,但实际操作时仍需注意细节。本文通过使用JMSL 4.0库中的图表对象作为示例,提供了一种实用的方法。 ...
[详细]
蜡笔小新 2024-11-21 21:42:59
-
本文详细介绍了Linux系统中信号量的相关函数,包括sem_init、sem_wait、sem_post和sem_destroy,解释了它们的功能和使用方法,并提供了示例代码。 ...
[详细]
蜡笔小新 2024-11-21 21:21:16
-
本文探讨了Node.js后端开发的基础知识,包括模块源码的使用方法、前后端源码的区别以及如何在命令行环境中编译Node.js源代码。 ...
[详细]
蜡笔小新 2024-11-21 20:56:59
-
本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ...
[详细]
蜡笔小新 2024-11-21 20:16:59
-
在使用 Nginx 作为服务器时,发现 Chrome 能正确从缓存中读取 CSS 和 JS 文件,而 Firefox 却无法有效利用缓存,导致加载速度显著变慢。 ...
[详细]
蜡笔小新 2024-11-21 19:57:43
-
王丹__-划_402
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
-
1宿主|可能会_Android架构组件之ViewModel
-
2c++ tostring函数 不能识别_基于MCU设计的语音识别系统
-
3【Python数据分析基础笔记(仅供本人学习记录)】时间日期转换实例
-
4CSS 选择器的作用
-
5RecyclerView源码分析一:测量 布局 绘制
-
6Mysql你必须知道的命令和函数
-
7中职计算机应用基础windows7,计算机应用基础(Windows 7+Office 2010)
-
8spi_flash的操作(擦除、写数据)
-
9YOLO 训练可视化:loss、iou、F1、map、precision、recall
-
10solr在项目中的使用
-
11视频会议直播和存储
-
12RxJava系列6:操作符总结
-
13开发笔记:android:整理drawable(余下的)
-
14Unity UI⭐️获取鼠标点击位置,将UI放置于该位置
-
15马少平、周枫、王小川、楼天城、唐文斌……清华计算机系与AI的40年
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有