博客園文章自動添加目錄-3級

展示效果

注意,在這裡標題二代表一級,標題三代表二級,標題四代表三級。

設置方式

首先我們需要申請開通js權限,然後將目錄js代碼複製到博客側邊欄公告(支持HTML代碼) (支持 JS 代碼)中,如下所示:

生成目錄JS代碼

// 生成目錄索引列表
function GenerateContentList()
{
    var mainContent = $('#cnblogs_post_body');
    //h2,大標標題內容
    var h2_list = $('#cnblogs_post_body h2');//如果你的章節標題不是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"><b style="font-family: "Arial","Microsoft YaHei","黑體","宋體",sans-serif;">🚀回到頂部</b></a><a name="_label' + i + '"></a></div>';
            
            //回到頂部添加
            $(h2_list[i]).before(go_to_top);
            
            //h3列表數據
             var h3_list = $(h2_list[i]).nextAll("h3");
            //console.log("h3l列表數據");
            var li3_content = '';
            for(var j=0; j<h3_list.length; j++)
            {
              //h3內容
              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  style="list-style-type:decimal;font-family: "Arial","Microsoft YaHei","黑體","宋體",sans-serif;"><a href="#_label' + i + '_' + j + '">' + $(h3_list[j]).text().replace(/:/g,"")+'</a></li>';

              //查詢h4導航內容遍歷----2020-06-06\(^o^)/~
              var li4_content="";//h4遍歷的列表數據
              var h4_list = $(h3_list[j]).nextAll("h4");
              //數據遍歷
              for(var y=0;y<h4_list.length;y++)
              {
                 //獲取第一組h4的值
                var tmp4= $(h4_list[y]).prevAll('h3').first();
                     
                   //當遍歷內容不等於該h3目錄下的值時
                if(!tmp4.is(h3_list[j]))
                   break;

                var li4_anchor = '<a name="_label' +i+'_'+j+ '_' +y+ '"></a>';
                 //插入對應的索引
                $(h4_list[y]).before(li4_anchor);
                li4_content += '<li style="list-style-type:lower-alpha"><a href="#_label' +i+'_' +j+ '_' + y+ '">' + $(h4_list[y]).text() + '</a></li>';
               }

              //console.log("h4遍歷結束了");
              //h4遍歷查詢結束
              if(li4_content.length>0)
              {
                li3_content+="<ul>"+li4_content+"</ul></li>";
              }
              else
              {
                 li3_content+="</li>";
              }
            }
            
            var li2_content = '';
            if(li3_content.length > 0)
                li2_content = '<li style="list-style-type:square"><a href="#_label' + i + '">' + $(h2_list[i]).text().replace(/:/g,"")+'</a><ul>' + li3_content + '</ul></li>';
            else
                li2_content = '<li style="list-style-type:square"><a href="#_label' + i + '">' + $(h2_list[i]).text().replace(/:/g,"")+'</a></li>';
            content += li2_content;
        }

        content += '</ul>';
        content += '</div><p>&nbsp;</p>';
        content+='<p style="font-size:18px"><b>文章正文:</b></p>';
        if($('#cnblogs_post_body').length != 0 )
        {
            $($('#cnblogs_post_body')[0]).prepend(content);
        }
    }   
}

GenerateContentList();
console.warn("想要突破自己,就要時刻的鞭策自己,我是大姚,一個永不認輸的男人!!");
</script>