国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用 js 根據(jù)文章中h標(biāo)簽生成目錄結(jié)構(gòu),生成樹狀結(jié)構(gòu)

當(dāng)編寫長篇文章或技術(shù)文檔時,為了方便讀者閱讀和快速導(dǎo)航,添加一個目錄結(jié)構(gòu)是一種常見的做法。在本文中,我將介紹如何使用JavaScript根據(jù)文章中的HTML標(biāo)簽生成一個目錄結(jié)構(gòu)。

準(zhǔn)備工作

首先,我們需要一個由HTML標(biāo)簽組成的文章。在這個示例中,我們將使用h2-會標(biāo)簽來構(gòu)建標(biāo)題層次結(jié)構(gòu)。

<div id="menu">menu</div>
<div id="article-content">
    <h2>文章目錄1</h2>
    <div>文章內(nèi)容1文章內(nèi)容1文章內(nèi)容1文章內(nèi)容1</div>
    <h3>文章目錄1-1</h3>
    <div>章內(nèi)容1文章內(nèi)容1文章內(nèi)容1文章內(nèi)容1</div>
    <h3>文章目錄1-2</h3>
    <div>章內(nèi)容1文章內(nèi)容1文章內(nèi)容1文章內(nèi)容1</div>
    <h2>文章目錄2</h2>
    <div>章內(nèi)容1文章內(nèi)容1文章內(nèi)容1文章內(nèi)容1</div>
    <h3>文章目錄2-1</h3>
    <div>章內(nèi)容1文章內(nèi)容1文章內(nèi)容1文章內(nèi)容1</div>
    <h3>文章目錄2-2</h3>
    <div>章內(nèi)容1文章內(nèi)容1文章內(nèi)容1文章內(nèi)容1</div>
    <h2>文章目錄3</h2>
    <div>章內(nèi)容1文章內(nèi)容1文章內(nèi)容1文章內(nèi)容1</div>
    <h3>文章目錄3-1</h3>
    <div>章內(nèi)容1文章內(nèi)容1文章內(nèi)容1文章內(nèi)容1</div>
</div>

生成目錄結(jié)構(gòu)

要生成目錄結(jié)構(gòu),我們可以編輯一個JavaScript函數(shù)。以下是一個基本的實現(xiàn):

function createMenu() {
  // 首先獲取所有H標(biāo)簽,若頁面中有h4,h5,h6則可以添加到參數(shù)中
  var headList = [...document.querySelectorAll("h1,h2,h3")]; // 將H標(biāo)簽構(gòu)造成一棵樹,就可以明確H標(biāo)簽之間的層級
  var root = {
    children: []
  };
  var h = {
    node: headList[0],
    children: [],
    parent: root
  };
  root.children.push(h);
  headList.reduce(function (pre, cur) {
    var n = {
      node: cur,
      children: []
    };
    while (h.node.localName[1] - n.node.localName[1] !== -1) {
      h = h.parent;
      if (h === root) {
        break;
      }
    }
    n.parent = h;
    h.children.push(n);
    h = n;
    return h;
  }); // 給H標(biāo)簽加id
  var index = 1;
  function createList(list) {
    var text = list.reduce(function (pre, cur) {
      var childText; // 判斷該H標(biāo)簽有沒有子層H標(biāo)簽
      if (cur.children.length) {
        childText = createList(cur.children);
      } else {
        childText = "";
      }
      cur.node.id = "header" + index++;
      pre += `<li>
                    <a href="#${cur.node.id}">
                      ${cur.node.innerHTML}
                    </a>
                    ${childText}
                  </li>`;
      return pre;
    }, "");
    var text = `<ul> ${text} </ul>`;
    return text;
  }
  var content = createList(root.children);
  document.getElementById("menu").innerHTML = content;
}
createMenu();//調(diào)用

最終效果圖

以下是運行代碼后的結(jié)果

js生成目錄效果圖文章來源地址http://www.zghlxwxcb.cn/article/696.html

到此這篇關(guān)于使用 js 根據(jù)文章中h標(biāo)簽生成目錄結(jié)構(gòu),生成樹狀結(jié)構(gòu)的文章就介紹到這了,更多相關(guān)內(nèi)容可以在右上角搜索或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

原文地址:http://www.zghlxwxcb.cn/article/696.html

如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請聯(lián)系站長進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • three.js實現(xiàn)3d球體樹狀結(jié)構(gòu)布局——樹狀結(jié)構(gòu)的實現(xiàn)

    three.js實現(xiàn)3d球體樹狀結(jié)構(gòu)布局——樹狀結(jié)構(gòu)的實現(xiàn)

    ????three.js實現(xiàn)3d球體樹狀結(jié)構(gòu)布局——添加入場、出場、點擊放大等動畫 ????three-spritetext: 用來繪制文字。THREE.TextGeometry繪制文字存在模糊問題,而且轉(zhuǎn)動camera時three-spritetext不需要手動處理讓文字始終面向camera。 ????three.meshline: 用來繪制線。THREE.LineBasicMaterial繪制線存

    2024年02月08日
    瀏覽(57)
  • 華為OD機試 - 樹狀結(jié)構(gòu)查詢(Java & JS & Python)

    題目描述 通常使用多行的節(jié)點、父節(jié)點表示一棵樹,比如 西安 陜西 陜西 中國 江西 中國 中國 亞洲 泰國 亞洲 輸入一個節(jié)點之后,請打印出來樹中他的所有下層節(jié)點 輸入描述 第一行輸入行數(shù),下面是多行數(shù)據(jù),每行以空格區(qū)分節(jié)點和父節(jié)點 接著是查詢節(jié)點 輸出描述 輸出

    2024年02月11日
    瀏覽(24)
  • 【數(shù)據(jù)結(jié)構(gòu)】【王道】【數(shù)據(jù)結(jié)構(gòu)實現(xiàn)】文章目錄

    持續(xù)更新中。。。 數(shù)據(jù)結(jié)構(gòu) 鏈接 順序表實現(xiàn)及基本操作(可直接運行) 文章鏈接 無頭結(jié)點單鏈表的實現(xiàn)及基本操作(可直接運行) 文章鏈接 帶頭結(jié)點單鏈表的實現(xiàn)及基本操作(可直接運行) 文章鏈接 雙鏈表的實現(xiàn)及基本操作(可直接運行) 文章鏈接 循環(huán)鏈表的實現(xiàn)及

    2023年04月08日
    瀏覽(33)
  • 一篇文章帶你了解SpringBoot目錄結(jié)構(gòu)

    一篇文章帶你了解SpringBoot目錄結(jié)構(gòu)

    前言 SpringBoot是整合Spring技術(shù)棧的一站式框架,是簡化Spring技術(shù)棧的快速開發(fā)腳手架,是一個能夠快速構(gòu)建生產(chǎn)級別的Spring應(yīng)用的工具。SpringBoot是目前流行的微服務(wù)框架,倡導(dǎo)“約定優(yōu)于配置”,簡化Spring項目搭建及開發(fā)過程。springboot提供了很多核心的功能,比如自動化配置

    2024年03月25日
    瀏覽(90)
  • django使用ztree實現(xiàn)樹狀結(jié)構(gòu)效果,子節(jié)點實現(xiàn)動態(tài)加載(l懶加載)

    django使用ztree實現(xiàn)樹狀結(jié)構(gòu)效果,子節(jié)點實現(xiàn)動態(tài)加載(l懶加載)

    ? ? ?由于最近項目中需要實現(xiàn)樹狀結(jié)構(gòu)的效果,考慮到ztree這個組件大家用的比較多,因此打算在django項目中集成ztree來實現(xiàn)樹狀的效果。最終實現(xiàn)的示例效果如下: ?? ? ? ?點擊父節(jié)點,如果有子節(jié)點,則從后臺動態(tài)請求數(shù)據(jù),然后顯示出子節(jié)點的數(shù)據(jù)。 ? ?? ? ? ? ?

    2024年02月14日
    瀏覽(24)
  • AIGC系列文章目錄 第三章 AIGC 簡單易用免費的AI圖像生成器: Stable Diffusion

    AIGC系列文章目錄 第三章 AIGC 簡單易用免費的AI圖像生成器: Stable Diffusion

    目前親測體驗的AI圖像生成器有NovelAI、MJ和Stable Diffusion。其中, 支持免費、無限生成、超高專業(yè)級畫質(zhì) 的只有 Stable Diffusion 。 Stable Diffusion 由 Stable Diffusion XL 提供支持,是一款最先進的工具,可以將您的想象力變?yōu)楝F(xiàn)實。 只需點擊幾下和簡單的文本輸入,您就可以創(chuàng)建令人

    2024年02月03日
    瀏覽(35)
  • Mac 快速生成樹形項目結(jié)構(gòu)目錄

    Mac 快速生成樹形項目結(jié)構(gòu)目錄

    我這里使用的是通過包管理 Homebrew 安裝形式。沒有安裝的話可以自行搜索 Homebrew 安裝方式 直接到項目的根目錄執(zhí)行 tree 命令 效果如下: or : 效果如下:

    2024年02月15日
    瀏覽(29)
  • 【JS每N日一練】 將CSDN文章自動生成Markdown列表

    【JS每N日一練】 將CSDN文章自動生成Markdown列表

    描述 作為程序員必備素質(zhì)-懶,今天又給自己了一個造了個需求: 將CSDN文章自動生成Markdown列表 。 也就是把寫過的文章列表,轉(zhuǎn)成 標(biāo)題+鏈接 的列表,如下圖所示: 環(huán)境 版本號 描述 文章日期 2023-04-14 頁面分析 打開控制臺頁面,很容易定位到文章列表,其內(nèi)部結(jié)構(gòu)如下圖:

    2023年04月15日
    瀏覽(28)
  • Web-WebApp Vue.js 目錄結(jié)構(gòu)

    Web-WebApp Vue.js 目錄結(jié)構(gòu)

    WebApp Vue.js 目錄結(jié)構(gòu) 目錄解析 目錄/文件 說明 build 最終發(fā)布的代碼存放位置。 config 配置目錄,包括端口號等。我們初學(xué)可以使用默認(rèn)的。 node_modules npm 加載的項目依賴模塊 src 這里是我們要開發(fā)的目錄,基本上要做的事情都在這個目錄里。里面包含了幾個目錄及文件: ass

    2024年02月13日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包