博客园文章目录结构
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> </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> </p>'; content += '<hr />'; if($('#cnblogs_post_body').length != 0 ) { $($('#cnblogs_post_body')[0]).prepend(content); } } } GenerateContentList(); </script>
本文来自博客园,作者:元贞,转载请注明原文链接:https://www.cnblogs.com/yuleicoder/p/13150041.html
浙公网安备 33010602011771号