欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

文章或博客自動生成章節(jié)目錄索引(支持三級)的實現(xiàn)代碼

 更新時間:2020年05月10日 11:51:20   作者:BIT祝威  
一個好的博文除了博文的質(zhì)量要好以外,好的組織結(jié)構(gòu)也能讓讀者閱讀的更加舒服與方便,我看很多網(wǎng)站里面有一些園友的博文都是分章節(jié)的,并且在博文的前面都帶有章節(jié)的目錄索引,點(diǎn)擊索引之后會跳轉(zhuǎn)到相應(yīng)的章節(jié)閱讀

自動生成章節(jié)目錄索引(只支持一級)

一個好的博文除了博文的質(zhì)量要好以外,好的組織結(jié)構(gòu)也能讓讀者閱讀的更加舒服與方便,我看園子里面有一些園友的博文都是分章節(jié)的,并且在博文的前面都帶有章節(jié)的目錄索引,點(diǎn)擊索引之后會跳轉(zhuǎn)到相應(yīng)的章節(jié)閱讀,并且還可以回到目錄頂端,其中 Fish Li 的博文就是這種組織,當(dāng)然這種結(jié)構(gòu)如果是在寫博文的時候人工設(shè)置那是非常麻煩的,無疑是增加了寫作人的工作量。如果能自動生成章節(jié)索引豈不是節(jié)省了一大堆工作量。本來想通過FireBug看看Fish Li源碼是怎么實現(xiàn)的,但是好像js是加密過的。那我就自己動手了,其實也沒多少代碼,很簡單。

<script language="javascript" type="text/javascript">
//生成目錄索引列表
function GenerateContentList()
{
  var jquery_h3_list = $('#cnblogs_post_body h3');//如果你的章節(jié)標(biāo)題不是h3,只需要將這里的h3換掉即可
  if(jquery_h3_list.length>0)
  {
    var content = '<a name="_labelTop"></a>';
    content  += '<div id="navCategory">';
    content  += '<p style="font-size:18px"><b>閱讀目錄</b></p>';
    content  += '<ul>';
    for(var i =0;i<jquery_h3_list.length;i++)
    {
      var go_to_top = '<div style="text-align: right"><a href="#_labelTop" rel="external nofollow" rel="external nofollow" >回到頂部</a><a name="_label' + i + '"></a></div>';
      $(jquery_h3_list[i]).before(go_to_top);
      var li_content = '<li><a href="#_label' + i + '" rel="external nofollow" rel="external nofollow" >' + $(jquery_h3_list[i]).text() + '</a></li>';
      content += li_content;
    }
    content  += '</ul>';
    content  += '</div>';
    if($('#cnblogs_post_body').length != 0 )
    {
      $($('#cnblogs_post_body')[0]).prepend(content);
    }
  }  
}
GenerateContentList();
</script>

使用方法:登錄到博客園之后,打開博客園的后臺管理,切換到“設(shè)置”選項卡,將上面的代碼,粘貼到 “頁腳HTML代碼” 區(qū)保存即可。

注意:上述js代碼中提取的h3作為章節(jié)的標(biāo)題,如果你的標(biāo)題不是h3請在代碼注釋的地方自行修改。該代碼除了在文章的最開始生成目錄索引之外,還會在每一個章節(jié)最后右下角(也就是下一個章節(jié)標(biāo)題的右上角)會生成一個“回到頂部”的鏈接,以方便讀者回到目錄。本篇文章的目錄結(jié)構(gòu)就是自動生成的效果,如果你覺得有用,就趕快試用一下吧。

自動生成三級目錄

<script language="javascript" type="text/javascript">
//生成目錄索引列表
function GenerateContentList()
{
  var jquery_h1_list = $('#cnblogs_post_body h1');
  if (jquery_h1_list.length == 0) { return; }
  if ($('#cnblogs_post_body').length == 0) { return; }

  var content = '<a name="_labelTop"></a>';
  content  += '<div id="navCategory">';
  content  += '<p style="font-size:18px"><b>閱讀目錄(Content)</b></p>';
  // 一級目錄 start
  content += '<ul class="first_class_ul">';

  for (var i = 0; i < jquery_h1_list.length; i++)
  {
    var go_to_top = '<div style="text-align: right"><a href="#_labelTop" rel="external nofollow" rel="external nofollow" >回到頂部(go to top)</a><a name="_label' + i + '"></a></div>';
    $(jquery_h1_list[i]).before(go_to_top);

    // 一級目錄的一條
    var li_content = '<li><a href="#_label' + i + '" rel="external nofollow" rel="external nofollow" >' + $(jquery_h1_list[i]).text() + '</a></li>';

    var nextH1Index = i + 1;
    if (nextH1Index == jquery_h1_list.length) { nextH1Index = 0; }
    var jquery_h2_list = $(jquery_h1_list[i]).nextUntil(jquery_h1_list[nextH1Index], "h2");
    // 二級目錄 start
    if (jquery_h2_list.length > 0)
    {
      //li_content +='<ul style="list-style-type:none; text-align: left; margin:2px 2px;">';
      li_content += '<ul class="second_class_ul">';
    }
    for (var j = 0; j < jquery_h2_list.length; j++)
    {
      var go_to_top2 = '<div style="text-align: right"><a name="_lab2_'+ i + '_' + j + '"></a></div>';
      $(jquery_h2_list[j]).before(go_to_top2);
      // 二級目錄的一條
      li_content +='<li><a href="#_lab2_'+ i +'_' + j + '" rel="external nofollow" >' + $(jquery_h2_list[j]).text() + '</a></li>';

      var nextH2Index = j + 1;
      var next;
      if (nextH2Index == jquery_h2_list.length) 
      {
        if (i + 1 == jquery_h1_list.length)
        {
          next = jquery_h1_list[0];
        }
        else
        {
          next = jquery_h1_list[i + 1];
        }
      }
      else
      {
        next = jquery_h2_list[nextH2Index];
      }
      var jquery_h3_list = $(jquery_h2_list[j]).nextUntil(next, "h3");
      // 三級目錄 start
      if (jquery_h3_list.length > 0)
      {
        li_content += '<ul class="third_class_ul">';
      }
      
      for (var k = 0; k < jquery_h3_list.length; k++)
      {
        var go_to_third_Content = '<div style="text-align: right"><a name="_label3_' + i + '_' + j + '_' + k + '"></a></div>';
        $(jquery_h3_list[k]).before(go_to_third_Content);
        // 三級目錄的一條
        li_content += '<li><a href="#_label3_' + i + '_' + j + '_' + k + '" rel="external nofollow" >' + $(jquery_h3_list[k]).text() + '</a></li>';
      }
      
      if (jquery_h3_list.length > 0)
      {
        li_content += '</ul>';
      }
      li_content += '</li>';
      // 三級目錄 end
    }
    if (jquery_h2_list.length > 0)
    {
      li_content +='</ul>';
    }
    li_content +='</li>';
    // 二級目錄 end

    content += li_content;
  }
  // 一級目錄 end
  content += '</ul>';
  content += '</div>';

  $($('#cnblogs_post_body')[0]).prepend(content);
}

GenerateContentList();
</script>
levels of contents

如何使用(How to Use)

把上述JS代碼復(fù)制到“頁腳Html代碼”里。

在寫博客的時候,給每個章節(jié)的標(biāo)題設(shè)置“標(biāo)題1”或“標(biāo)題2”或“標(biāo)題3”格式。

然后一切就緒,欣賞效果吧。

示例(Demo)

http://www.dbjr.com.cn/article/186217.htm

腳本之家小編注:為了seo考慮,不建議大量用h1,一個頁面可以存在多個h2,h3,h4,所以腳本之家網(wǎng)站采用的是h2,h3,h4實現(xiàn)三級目錄。

補(bǔ)充:

腳本之家小編從別的地方看到的相關(guān)文章可以當(dāng)個參考

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <style>
    * {
      margin: 0;
      padding: 0;
      word-break: break-all;
    }
    #toc {
      width: 200px;
      position: fixed;
      left: 0;
      top: 0;
    }
    #toc a.active {
      color: red;
    }
    #content {
      margin-left: 200px;
    }
  </style>
  <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
  <script>
    $(document).ready(function () {
      for (var i = 0; i < 50; ++i) {
        $(".seg-content").append("<p>一個段落而已</p>")
      }

      (function () {
        var segs = [];
        $(".seg-begin").each(function (idx, node) {
          segs.push(node)

          var link = $("<a></a>").attr("href", "#" + $(node).attr("name")).html($(node).children("h1").html())
          if (!idx) {
            link.addClass("active")
          }
          var row = $("<li></li>").append(link)
          $("#toc ul").append(row)
        })

        $(window).bind("scroll", function() {
          var scrollTop = $(this).scrollTop()

          var topSeg = null
          for (var idx in segs) {
            var seg = segs[idx]
            if (seg.offsetTop > scrollTop) {
              continue
            }
            if (!topSeg) {
              topSeg = seg
            } else if (seg.offsetTop >= topSeg.offsetTop) {
              topSeg = seg
            }
          }
          if (topSeg) {
            $("#toc a").removeClass("active")

            var link = "#" + $(topSeg).attr("name")
            console.log('#toc a[href="' + link + '" rel="external nofollow" rel="external nofollow" ]')
            $('#toc a[href="' + link + '" rel="external nofollow" rel="external nofollow" ]').addClass("active")
            // console.log($(topSeg).children("h1").text())
          }
        })
      })()
    })
  </script>
</head>
<body>
  <div id="toc">
    <ul>

    </ul>
  </div>
  <div id="content">
    <a name="seg-1" class="seg-begin"><h1>第1章節(jié)</h1></a>
    <div class="seg-content"></div>
    <a name="seg-2" class="seg-begin"><h1>第2章節(jié)</h1></a>
    <div class="seg-content"></div>
    <a name="seg-3" class="seg-begin"><h1>第3章節(jié)</h1></a>
    <div class="seg-content"></div>
    <a name="seg-4" class="seg-begin"><h1>第4章節(jié)</h1></a>
    <div class="seg-content"></div>
  </div>
</body>
</html>

具體的使用可以參考下面的文章。

相關(guān)文章

  • JavaScript實現(xiàn)計數(shù)器基礎(chǔ)方法

    JavaScript實現(xiàn)計數(shù)器基礎(chǔ)方法

    這篇文章主要為大家詳細(xì)介紹了JavaScript實現(xiàn)計數(shù)器的基礎(chǔ)方法
    ,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • 旺旺在線客服代碼 旺旺客服代碼生成器

    旺旺在線客服代碼 旺旺客服代碼生成器

    很多朋友想在網(wǎng)站上插入自己的阿里旺旺在線聯(lián)系圖片,就像是和QQ一樣,小編為大家詳細(xì)講解了旺旺在線客服代碼以及旺旺客服代碼生成器,希望能夠幫助到大家。
    2018-01-01
  • js隨機(jī)生成網(wǎng)頁背景顏色的方法

    js隨機(jī)生成網(wǎng)頁背景顏色的方法

    這篇文章主要介紹了js隨機(jī)生成網(wǎng)頁背景顏色的方法,涉及javascript操作背景色的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • JS實現(xiàn)兼容各種瀏覽器的高級拖動方法完整實例【測試可用】

    JS實現(xiàn)兼容各種瀏覽器的高級拖動方法完整實例【測試可用】

    這篇文章主要介紹了JS實現(xiàn)兼容各種瀏覽器的高級拖動方法,以完整實例形式分析了JS實現(xiàn)響應(yīng)鼠標(biāo)事件動態(tài)修改頁面元素的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • 微信小程序?qū)崿F(xiàn)工作時間段選擇

    微信小程序?qū)崿F(xiàn)工作時間段選擇

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)工作時間段選擇,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • Bootstrap每天必學(xué)之警告框插件

    Bootstrap每天必學(xué)之警告框插件

    Bootstrap每天必學(xué)之警告框插件,使用警告框(Alert)插件,您可以向所有的警告框消息添加可取消(dismiss)功能,感興趣的小伙伴們可以參考一下
    2016-04-04
  • 獲取焦點(diǎn)時,利用js定時器設(shè)定時間執(zhí)行動作

    獲取焦點(diǎn)時,利用js定時器設(shè)定時間執(zhí)行動作

    網(wǎng)上有很多類似的知識,并不是有什么難度的技巧,僅僅是開發(fā)過程中的一點(diǎn)點(diǎn)積累而已。
    2010-04-04
  • 詳解JavaScript堆棧與拷貝

    詳解JavaScript堆棧與拷貝

    本文主要介紹了JavaScript中的堆棧與拷貝,能更好的幫助你理解JS的內(nèi)存機(jī)制,感興趣的同學(xué),一定要認(rèn)真看下
    2021-06-06
  • 微信小程序左右滑動刪除事件詳解

    微信小程序左右滑動刪除事件詳解

    這篇文章主要為大家詳細(xì)介紹了微信小程序左右滑動刪除事件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • JavaScript之clipboard用法詳解

    JavaScript之clipboard用法詳解

    這篇文章主要介紹了JavaScript之clipboard用法詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08

最新評論