讓網(wǎng)站自動(dòng)生成章節(jié)目錄索引的多個(gè)js代碼
第一種:只支持一級(jí)目錄
<h3>,作為段落不支持分類
一個(gè)好的博文除了博文的質(zhì)量要好以外,好的組織結(jié)構(gòu)也能讓讀者閱讀的更加舒服與方便,我看園子里面有一些園友的博文都是分章節(jié)的,并且在博文的前面都帶有章節(jié)的目錄索引,點(diǎn)擊索引之后會(huì)跳轉(zhuǎn)到相應(yīng)的章節(jié)閱讀,并且還可以回到目錄頂端,其中 Fish Li 的博文就是這種組織,當(dāng)然這種結(jié)構(gòu)如果是在寫(xiě)博文的時(shí)候人工設(shè)置那是非常麻煩的,無(wú)疑是增加了寫(xiě)作人的工作量。如果能自動(dòng)生成章節(jié)索引豈不是節(jié)省了一大堆工作量。本來(lái)想通過(guò)FireBug看看Fish Li源碼是怎么實(shí)現(xiàn)的,但是好像js是加密過(guò)的。那我就自己動(dòng)手了,其實(shí)也沒(méi)多少代碼,很簡(jiǎn)單。
html代碼
<h3>章節(jié)1</h3> <p>這里是章節(jié)1的內(nèi)容</p> <h3>章節(jié)2</h3> <p>這里是章節(jié)2的內(nèi)容</p> <h3>章節(jié)3</h3> <p>這里是章節(jié)3的內(nèi)容</p> <h3>章節(jié)4</h3> <p>小小代碼,不值一提,如果您覺(jué)得對(duì)您還有一點(diǎn)用,就點(diǎn)個(gè)贊支持一下吧。</p>
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" 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>
使用方法:登錄到博客園之后,打開(kāi)博客園的后臺(tái)管理,切換到“設(shè)置”選項(xiàng)卡,將上面的代碼,粘貼到 “頁(yè)腳HTML代碼” 區(qū)保存即可。
注意:上述js代碼中提取的h3作為章節(jié)的標(biāo)題,如果你的標(biāo)題不是h3請(qǐng)?jiān)诖a注釋的地方自行修改。該代碼除了在文章的最開(kāi)始生成目錄索引之外,還會(huì)在每一個(gè)章節(jié)最后右下角(也就是下一個(gè)章節(jié)標(biāo)題的右上角)會(huì)生成一個(gè)“回到頂部”的鏈接,以方便讀者回到目錄。本篇文章的目錄結(jié)構(gòu)就是自動(dòng)生成的效果,如果你覺(jué)得有用,就趕快試用一下吧。
原文:https://www.cnblogs.com/wangqiguo/p/4355032.html
第二種:支持二級(jí)分類
通過(guò)<h2><h3>
效果圖:
對(duì)于比較長(zhǎng)的文章,有一個(gè)好的目錄索引是很有必要的,可以讓讀者比較清楚地了解文章內(nèi)容和層次。然而,目前(2015.7)博客園不像csdn博客那樣,會(huì)對(duì)發(fā)布的文章自動(dòng)生成目錄索引。不過(guò),一些網(wǎng)友通過(guò)博客園后臺(tái)提供的一些自定義功能,自己寫(xiě)腳本實(shí)現(xiàn)了這一功能。我用的腳本主要就是參考@薰衣草的旋律 的,文章地址是:http://www.cnblogs.com/wangqiguo/p/4355032.html。
原作者的腳本只支持1級(jí)目錄,我改了兩級(jí):第1級(jí)是h2,第2級(jí)是h3。還添加了一些小玩意,比如討論qq群號(hào)。效果如下圖所示:
添加功能的具體步驟是:
1、確保自己的博客園后臺(tái)支持js
這個(gè)默認(rèn)是不支持,需要向官方發(fā)個(gè)郵件申請(qǐng)開(kāi)通(郵箱是contact@cnblogs.com),我簡(jiǎn)單寫(xiě)了封郵件,1小時(shí)就回復(fù)了,郵件內(nèi)容我只寫(xiě)了兩個(gè)字:如題。。。。
2、到后臺(tái)加入腳本
打開(kāi)博客園后臺(tái),進(jìn)入“設(shè)置”標(biāo)簽頁(yè),在最下面的“頁(yè)腳Html代碼”對(duì)應(yīng)的編輯框粘貼你的js代碼,然后點(diǎn)“保存”按鈕保存。
3、按格式寫(xiě)文章
在寫(xiě)新博文的時(shí)候,注意按照你js腳本里設(shè)定的格式來(lái)劃分章節(jié),比如h2,h3等。當(dāng)然,以前發(fā)布的文章如果有h2,h3之類,也會(huì)自動(dòng)生成目錄索引。
如下:
<script language="javascript" type="text/javascript"> // 生成目錄索引列表 // ref: http://www.cnblogs.com/wangqiguo/p/4355032.html // modified by: zzq function GenerateContentList() { var mainContent = $('#cnblogs_post_body'); var h2_list = $('#cnblogs_post_body h2');//如果你的章節(jié)標(biāo)題不是h2,只需要將這里的h2換掉即可 if(mainContent.length < 1) return; if(h2_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<h2_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>'; $(h2_list[i]).before(go_to_top); var h3_list = $(h2_list[i]).nextAll("h3"); var li3_content = ''; for(var j=0; j<h3_list.length; j++) { var tmp = $(h3_list[j]).prevAll('h2').first(); if(!tmp.is(h2_list[i])) break; var li3_anchor = '<a name="_label' + i + '_' + j + '"></a>'; $(h3_list[j]).before(li3_anchor); li3_content += '<li><a href="#_label' + i + '_' + j + '" rel="external nofollow" >' + $(h3_list[j]).text() + '</a></li>'; } var li2_content = ''; if(li3_content.length > 0) li2_content = '<li><a href="#_label' + i + '" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >' + $(h2_list[i]).text() + '</a><ul>' + li3_content + '</ul></li>'; else li2_content = '<li><a href="#_label' + i + '" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >' + $(h2_list[i]).text() + '</a></li>'; content += li2_content; } content += '</ul>'; content += '</div><p> </p>'; content += '<p style="font-size:18px"><b>正文</b></p>'; if($('#cnblogs_post_body').length != 0 ) { $($('#cnblogs_post_body')[0]).prepend(content); } } var qqinfo = '<p style="color:navy;font-size:12px">討論QQ群:135202158</p>'; $(mainContent[0]).prepend(qqinfo); } GenerateContentList(); </script>
第三種:支持三級(jí)目錄
通過(guò)<h2><h3><h4>實(shí)現(xiàn)
效果圖
演示頁(yè)面:http://www.dbjr.com.cn/article/132341.htm
參考張果的頁(yè)面,他使用的是<h1><h2><h3>,這里腳本之家小編使用的是<h2><h3><h4>,根據(jù)seo的說(shuō)法,頁(yè)面中大量出現(xiàn)h1對(duì)權(quán)重有影響。
<script language="javascript" type="text/javascript"> //生成目錄索引列表 function GenerateContentList() { var jquery_h1_list = $('#content h2'); if (jquery_h1_list.length == 0) { return; } if ($('#content').length == 0) { return; } var content = '<a name="_labelTop"></a>'; content += '<div id="navCategory">'; content += '<p style="font-size:18px"><b>目錄</b></p>'; // 一級(jí)目錄 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 name="_label' + i + '"></a></div>'; $(jquery_h1_list[i]).before(go_to_top); // 一級(jí)目錄的一條 var li_content = '<li><a href="#_label' + i + '" rel="external nofollow" rel="external nofollow" 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], "h3"); // 二級(jí)目錄 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); // 二級(jí)目錄的一條 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, "h4"); // 三級(jí)目錄 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); // 三級(jí)目錄的一條 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>'; // 三級(jí)目錄 end } if (jquery_h2_list.length > 0) { li_content += '</ul>'; } li_content += '</li>'; // 二級(jí)目錄 end content += li_content; } // 一級(jí)目錄 end content += '</ul>'; content += '</div>'; $($('#content')[0]).prepend(content); } GenerateContentList(); </script>
參考:http://www.cnblogs.com/best/
到此文章就結(jié)束了,希望大家以后多多支持腳本之家。
- 使用javascript為網(wǎng)頁(yè)增加夜間模式
- 通過(guò)Nodejs搭建網(wǎng)站簡(jiǎn)單實(shí)現(xiàn)注冊(cè)登錄流程
- 利用JS測(cè)試目標(biāo)網(wǎng)站的打開(kāi)響應(yīng)速度
- android Jsoup獲取網(wǎng)站內(nèi)容 android獲取新聞標(biāo)題實(shí)例
- nodejs+express實(shí)現(xiàn)文件上傳下載管理網(wǎng)站
- AngularJS實(shí)現(xiàn)網(wǎng)站換膚實(shí)例
- 基于JavaScript或jQuery實(shí)現(xiàn)網(wǎng)站夜間/高亮模式
相關(guān)文章
JS獲取字符串實(shí)際長(zhǎng)度(包含漢字)的簡(jiǎn)單方法
下面小編就為大家?guī)?lái)一篇JS獲取字符串實(shí)際長(zhǎng)度(包含漢字)的簡(jiǎn)單方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08JS不同運(yùn)算符下隱式類型轉(zhuǎn)換的實(shí)現(xiàn)示例
隱式轉(zhuǎn)換就是自動(dòng)轉(zhuǎn)換,通常發(fā)生在一些數(shù)學(xué)運(yùn)算中,本文就來(lái)介紹一下JS不同運(yùn)算符下隱式類型轉(zhuǎn)換的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12前端url拼接參數(shù)格式&?用&和??=拼接方法實(shí)例
在一些情況下需要直接往url上拼接請(qǐng)求參數(shù),下面這篇文章主要給大家介紹了關(guān)于前端url拼接參數(shù)格式&?用&和??=拼接的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02微信小程序報(bào)錯(cuò):does?not?have?a?method?"xxxx"?to?ha
這篇文章主要給大家介紹了關(guān)于微信小程序報(bào)錯(cuò):does?not?have?a?method?"xxxx"?to?handle?event?"tap"的解決方案,文中將解決的辦法介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01JavaScript的public、private和privileged模式
公共/私有變量和方法通過(guò)一個(gè)簡(jiǎn)單的的例子,來(lái)展示如何使用JavaScript在類里面創(chuàng)建私有變量和方法2009-12-12