博客园文章自动生成目录-3级

展示效果

注意,在这里标题二代表一级,标题三代表二级,标题四代表三级。

设置方式

首先我们需要申请开通js权限,然后将目录js代码复制到博客侧边栏公告(支持HTML代码) (支持 JS 代码)中,如下所示:

生成目录JS代码

< script type = 'text/javascript' >
// 生成目录索引列表
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;"><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();

< /script>/

 

posted @ 2020-06-06 02:07  追逐时光者  阅读(532)  评论(3编辑  收藏  举报