• 博客园文章目录结构


    1

    1-1

    1-1-1

    1-1-2

    1-1-3

    2

    2-1

    2-1-1 

    2-1-2

    2-1-3 

    看到博客园有的博主博文有目录结构,感觉特别的清晰。但是看他们大都只有二级目录结构,于是自己改了一下,弄了自己的三级目录结构。文章前面就是显示的效果。

    代码如下

    <script language = "javascript" type = "text/javascript" >
    
        function GenerateContentList() {
            var mainContent = $('#cnblogs_post_body');
            var h2_list = $('#cnblogs_post_body h2');
    
            if (mainContent.length < 1) {
                return;
            }
    
            if (h2_list.length > 0) {
                var content = '<a name="_labelTop"></a>';
                content += '<div id="navCategory" style="color:#152e97;">';
                content += '<p style="font-size:18px;"><b>目录</b></p>';
                content += '<ul>';
    
                var li2_content = '';
                for (var i = 0; i < h2_list.length; i++) {    //循环标签2
                    var go_to_top = '<div style="text-align: right;"><a href="#_labelTop" style="color:#f68a33">反回顶部</a><a name="_label2-' + i + '"></a></div>';
                    $(h2_list[i]).before(go_to_top);
                    var h3_list = $(h2_list[i]).nextAll("h3");
                    var li3_content = ''
                    if (h3_list.length > 0) {
    
                        for (var j = 0; j < h3_list.length; j++) {
                             var tmp = $(h3_list[j]).prevAll('h2').first();   // h3前面的所有h2,会从靠近该h3往前,假如当前是h2[1]下面的h3[0] 那么preAll: [h2[1],h2[0]]
                             if (!tmp.is(h2_list[i])) {    // 判断当前h3的父级h2是不是本次循环的父级h2,不是则说明,该h3不属于本次循环的h2
                                 break;        //不属于该h2的,h3则退出
                             }
                            var li3_anchor = '<a name="_label2-' + i + '_label3-' + j + '"></a>'; // 建立锚点
                            $(h3_list[j]).before(li3_anchor);  // 该标签行添加锚点
                            var h4_list = $(h3_list[j]).nextAll("h4");
                            if (h4_list.length > 0) {
                                var li4_content = '';
                                for (var k = 0; k < h4_list.length; k++) {
                                    var tmp1 = $(h4_list[k]).prevAll('h3').first();
                                    if (!tmp1.is(h3_list[j])) {
                                         break;
                                    }
                                    var li4_anchor = '<a name="_label2-' + i + '_label3-' + j + '_label4-' + k + '"></a>'; // 建立锚点
                                    $(h4_list[j]).before(li4_anchor);  // 该标签行添加锚点
    
                                    li4_content += '<li><a href="#_label2-' + i + '_label3-' + j + '_label4-' + k + '">' + $(h4_list[k]).text() + '</a></li>';   // 目录4内容
                                }
                                li3_content += '<li><a href="#_label2-' + i + '_label3-' + j + '">' + $(h3_list[j]).text() + '</a><ul>' + li4_content + '</ul></li>';   // 目录3内容+目录4
                            } else {
                                li3_content += '<li><a href="#_label2-' + i + '_label3-' + j + '">' +  $(h3_list[j]).text() + '</a></li>';   // 目录3内容
                            }
                        }
                        li2_content += '<li><a href="#_label2-' + i + '">' +$(h2_list[i]).text() + '</a><ul>' + li3_content + '</ul></li>';  // 目录2内容+ 目录3
                    } else {
                        li2_content += '<li><a href="#_label2-' + i + '">' +$(h2_list[i]).text() + '</a></li>';// 目录2内容
                    }
                }
    
    
                content += li2_content;
    
                content += '</ul>';
                content += '</div><p>&nbsp;</p>';
    
                if ($('#cnblogs_post_body').length != 0) {
                    $($('#cnblogs_post_body')[0]).prepend(content);
                }
            }
        };
    
    GenerateContentList();
    
    
    </script>

    开通JS权限后,粘贴到页脚代码就OK了

    <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');//如果你的章节标题不是h2,只需要将这里的h2换掉即可
    
    
        if (mainContent.length < 1)
            return;
    
    
        if (h2_list.length>0)  // 如果二级目录不为空
        {
            var content = '<a name="_labelTop"></a>';                                             // 顶部
            content += '<div id="navCategory" style="color:#152e97;">';
            content += '<p style="font-size:18px;"><b>目录</b></p>';
            content += '<ol>';
            for (var i=0; i<h2_list.length; i++)   // 循环每个h2章节标题下面的低级
            {
                var go_to_top = '<div style="text-align: right;"><a href="#_labelTop" style="color:#f68a33">返回顶部</a><a name="_label' + i + '"></a></div>';
                $(h2_list[i]).before(go_to_top); // 在每个h2章节的前面添加回到顶部的标签
    
    
                var h3_list = $(h2_list[i]).nextAll("h3");      //找到所有的h3
                var li3_content = '';                         // h3的内容
                for (var j=0; j<h3_list.length; j++)           //循环h3
                {
                    var tmp = $(h3_list[j]).prevAll('h3').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 + '"style="font-size:12px;color:#2b6695;">' + $(h3_list[j]).text() + '</a></li>';
                }
    
    
                var li2_content = '';
                if(li3_content.length > 0)
                    li2_content = '<li><a href="#_label' + i + '"style="font-size:12px;color:#2b6695;">' + $(h2_list[i]).text() + '</a><ul>' + li3_content + '</ul></li>';
                else
                    li2_content = '<li><a href="#_label' + i + '">' + $(h2_list[i]).text() + '</a></li>';
                content += li2_content;
            }
    
            content += '</ol>';
            content += '</div><p>&nbsp;</p>';
            content += '<hr />';
            if($('#cnblogs_post_body').length != 0 )
            {
                $($('#cnblogs_post_body')[0]).prepend(content);
            }
        }
    }
    
    
    GenerateContentList();
    </script>
    二级目录结构
  • 相关阅读:
    管道及有名管道(pipe与FIFO)
    详细介绍Linux重定向的使用
    Emacs文件和目录操作模式Dired
    exec家族函数
    Seven file types of Unix system(4.3)
    va_list、va_start、va_arg、va_end的原理与使用
    const int*和int const*的区别
    asp.net 文件加载错误
    终于有了属于自己的家,哈哈,很高兴~~
    难得的一场雪
  • 原文地址:https://www.cnblogs.com/wenyule/p/13150041.html
Copyright © 2020-2023  润新知