`

javascript之小应用-自动生成目录

阅读更多
这个例子描述了javascript对文档操作的很多概念:

·元素选取
·文档遍历
·元素创建
·元素属性设置
·插入新的节点元素




<!DOCTYPE html>
<html>
    <head>
         <style>
            #TOC { border: solid black 1px; margin: 10px; padding: 10px; }
            .TOCEntry { font-family: sans-serif; }
            .TOCEntry a { text-decoration: none; }
            .TOCLevel1 { font-size: 16pt; font-weight: bold; }
            .TOCLevel2 { font-size: 12pt; margin-left: .5in; }
            .TOCSectNum:after { content: ": "; }
        </style>
         <script type="text/javascript">
            function  toc() { // Anonymous function defines a local scope
                    // Find the TOC container element.
                    // If there isn't one, create one at the start of the document.
                    var toc = document.getElementById("TOC");
                    if (!toc) {
                        toc = document.createElement("div");
                        toc.id = "TOC";
                        document.body.insertBefore(toc, document.body.firstChild);
                    }

                    // Find all section heading elements
                    var headings;

                    if (document.querySelectorAll) // Can we do it the easy way?
                        headings = document.querySelectorAll("h1,h2,h3,h4,h5,h6");
                    else // Otherwise, find the headings the hard way
                        headings = findHeadings(document.body, []);
                    
                    // Recursively traverse the document body looking for headings
                    function findHeadings(root, sects) {
                        for(var c = root.firstChild; c != null; c = c.nextSibling) {
                            if (c.nodeType !== 1) continue;
                            if (c.tagName.length == 2 && c.tagName.charAt(0) == "H")
                                sects.push(c);
                            else
                            findHeadings(c, sects);
                        }
                        return sects;
                    }
                    
                    // Initialize an array that keeps track of section numbers.
                    var sectionNumbers = [0,0,0,0,0,0];
                    
                    // Now loop through the section header elements we found.
                    for(var h = 0; h < headings.length; h++) {
                        var heading = headings[h];

                        // Skip the section heading if it is inside the TOC container.
                        if (heading.parentNode == toc) continue;

                        // Figure out what level heading it is.
                        var level = parseInt(heading.tagName.charAt(1));
                        if (isNaN(level) || level < 1 || level > 6) continue;
                        
                        // Increment the section number for this heading level
                        // and reset all lower heading level numbers to zero.
                        sectionNumbers[level-1]++;
                        for(var i = level; i < 6; i++) sectionNumbers[i] = 0;
                        
                        // Now combine section numbers for all heading levels
                        // to produce a section number like 2.3.1.
                        var sectionNumber = sectionNumbers.slice(0,level).join(".")
                        
                        // Add the section number to the section header title.
                        // We place the number in a <span> to make it styleable.
                        var span = document.createElement("span");
                        span.className = "TOCSectNum";
                        span.innerHTML = sectionNumber;
                        heading.insertBefore(span, heading.firstChild);

                        // Wrap the heading in a named anchor so we can link to it.
                        var anchor = document.createElement("a");
                        anchor.name = "TOC"+sectionNumber;
                        heading.parentNode.insertBefore(anchor, heading);
                        anchor.appendChild(heading);

                        // Now create a link to this section.
                        var link = document.createElement("a");
                        link.href = "#TOC" + sectionNumber; // Link destination
                        link.innerHTML = heading.innerHTML; // Link text is same as heading

                        // Place the link in a div that is styleable based on the level.
                        var entry = document.createElement("div");
                        entry.className = "TOCEntry TOCLevel" + level;
                        entry.appendChild(link);

                        // And add the div to the TOC container.
                        toc.appendChild(entry);
                    }
                };
        
          //  window.onload = toc;

        </script>
    </head>
    <body>
         <h1>h1</h1>
         <h2>h2</h2>
         
         <h1>h1</h1>
         <h2>h2</h2>
         <h2>h2</h2>
         
         <h1>h1</h1>
         
         <h1>h1</h1>         
         <h2>h2</h2>
         <h2>h2</h2>
         
         <h1>h1</h1>
         <h2>h2</h2>
         
         <input type="button" value="Click Me" onclick= "toc();"/>
         
         
    </body>
</html>


点击 Click Me 之前:


点击 Click Me 之后:






















-
  • 大小: 5 KB
  • 大小: 9.4 KB
分享到:
评论

相关推荐

    js导出到word并产生目录

    ### 知识点详解:利用JavaScript将JSP中的表格数据导出至Word并自动生成目录 #### 一、概述 本文档将详细介绍如何在MyEclipse环境中,通过JavaScript(简称JS)实现从JSP页面中提取表格数据,并将其导出至...

    仿百度文库自动生成目录自适应版

    【标题】"仿百度文库自动生成目录自适应版"是一个网页开发项目,旨在实现类似百度文库的功能,能够根据文章内容自动生成目录,并且该功能适用于不同设备,包括个人电脑(PC)和移动设备。这表明项目的核心是创建一个...

    javascript-client-generated.zip

    JavaScript客户端生成的.zip文件,通常包含了开发者为了实现特定功能或应用而编写的JavaScript代码。"123 321"标签可能代表了项目编号或者是内部分类标识,但具体含义需要根据上下文来理解。在这个压缩包中,只有一...

    JavaScript-Canvas-to-Blob-master

    如果目标浏览器不支持原生的`toBlob`方法,JavaScript-Canvas-to-Blob-master将自动处理这个过程,保证在所有现代浏览器及部分旧版浏览器中的兼容性。这极大地扩展了开发者在跨平台Web应用中使用Canvas的能力,尤其...

    结合MFC与html制作的一个能自动遍历目录并生成html形式折叠菜单的小工具,用工具生成的html代码

    总的来说,这个小工具利用了MFC的强大功能,结合HTML和JavaScript,为用户提供了快速生成目录结构索引的能力,提升了办公效率。免安装的特点使得它更加便捷,可以直接运行。通过理解和应用这些技术,开发者可以创建...

    Electron应用使用electron-updater实现自动更新

    为了提供更好的用户体验,自动更新功能是必不可少的,它允许用户无缝地升级到最新版本的应用。`electron-updater` 是一个强大的工具,它使这个过程变得简单。 `electron-updater` 是 Electron 生态系统中的一个模块...

    js-docs:Ruffle JavaScript文档-自动生成

    **JavaScript文档自动生成工具——Ruffle JavaScript Docs** 在IT行业中,文档是软件开发的重要组成部分,它为团队协作、代码维护和学习提供了清晰的指引。`Ruffle JavaScript Docs` 是一个专用于生成JavaScript...

    nodejs实现读取本地文件生成目录树

    在Node.js环境中,读取本地文件并生成目录树是一种常见的需求,特别是在开发文件管理系统或进行文件操作时。Node.js提供了一系列强大的文件系统(fs)模块,使得开发者能够方便地进行文件和目录的操作。本篇文章将...

    Front-End-JavaScript-Frameworks-Angular

    如果您更改任何源文件,该应用程序将自动重新加载。代码脚手架运行ng generate component component-name生成一个新的组件。 您还可以使用ng generate directive|pipe|service|class|guard|interface|enum|module ...

    DWR生成目录树

    在本主题中,我们将深入探讨如何使用DWR生成目录树,这在构建动态的、交互性强的Web应用时尤其有用。 目录树是一种数据结构,通常用于表示文件系统或组织层次结构。在Web应用中,用户可能需要浏览多级目录结构,...

    mvc代码自动生成

    总结来说,"mvc代码自动生成"是通过工具自动化创建Java Spring MVC应用中的DAO、Service和Controller代码,提高开发效率。结合使用Eclipse这样的IDE和代码生成器,开发者能够更快地搭建起符合MVC架构的Web应用,并且...

    实例5--自动换行(修订版)

    这个实例可能讲解了如何在不同的编程语言或框架中实现自动换行,比如Java、Python、JavaScript等,或者是针对移动应用开发,如Android。 【描述】虽然描述部分为空,但根据标题,我们可以推断这篇文章可能提供了...

    自动生成文章导读导航的 JavaScript 工具

    在这个特定的场景中,我们讨论的是一个名为 "outline.js" 的 JavaScript 工具,其主要功能是自动生成文章的导读导航。 首先,我们要理解什么是“文章导读导航”。在阅读长篇文章时,特别是技术文档或研究论文,一个...

    通过htmlh1h2h3h4h5h6标签生成内容目录结构

    基于"通过htmlh1h2h3h4h5h6标签生成内容目录结构"的标题,我们可以讨论如何利用JavaScript来自动化创建这样的目录结构。这种技术常见于博客、教程网站或文档管理系统,它能提升用户体验,使用户能够轻松浏览和跳转到...

    markdown-toc:Markdown TOC(目录)生成器

    Markdown TOC(目录)生成器是一款用于在Markdown文档中自动生成目录的工具,它极大地提升了Markdown文件的可读性和导航效率。Markdown是一种轻量级的标记语言,常用于编写博客、文档、README等,它的语法简洁明了,...

    Node.js-AzureCrawler-为AngularEmberDurandal或任何JavaScript应用获取HTML快照

    这就是`AzureCrawler`的作用,它是一个基于Node.js的工具,专为Angular、Ember、Durandal等JavaScript应用设计,用于生成HTML快照。 ### 1. Node.js介绍 Node.js是一个开放源代码、跨平台的JavaScript运行环境,它...

    代码自动生成

    在IT行业中,代码自动生成被广泛应用于各种场景,如数据库映射代码、界面生成、框架初始化等。本文将深入探讨代码自动生成的概念、原理、工具以及其在实际开发中的应用。 首先,我们需要理解代码自动生成的基本概念...

    react-用于生成reactweb项目的脚手架工具

    React是目前非常流行的JavaScript库,主要用于构建用户界面,尤其适合单页应用(SPA)。而"react-用于生成reactweb项目的脚手架工具"是开发者在创建React Web项目时的一个便捷起点,它通常被称为React脚手架,比如...

Global site tag (gtag.js) - Google Analytics