<script>
var left = document.getElementById('main-left');
var right = document.getElementById('main-right');
var array = document.getElementsByClassName('zone-box');
function buildDiv(scroll, tb, size) {
var old = scroll.getElementsByTagName("div");
if (old.length > 0) {
for (var o = 0; o < old.length; o++) {
old[o].remove();
}
}
var tb2 = tb.cloneNode(true);
var len = tb2.rows.length;
for (var i = len; i > size; i--) {
tb2.deleteRow(size);
}
var bak = document.createElement("div");
bak.style.width = scroll.clientWidth + 'px';
scroll.appendChild(bak);
bak.appendChild(tb2);
bak.style.position = "absolute";
bak.style.backgroundColor = "#cfc";
//表头背景颜色,请保持和css中定义颜色一样
bak.style.display = "block";
bak.style.left = 0;
bak.style.top = "0px";
scroll.onscroll = function () {
bak.style.top = this.scrollTop + "px";
}
}
window.onload = function () {
for (var s = 0; s < array.length; s++) {
if (array[s].getElementsByTagName('table').length > 0) {
buildDiv(array[s], array[s].getElementsByTagName('table')[0], 1);
}
}
//添加目录
var h2List = [], h3List = [], h4List = [];
var i1 = 0, i2 = 0, i3 = 0, n1 = 0, n2 = 0, n3 = 0;
var temp = '<dl>';
var cateList = right.innerHTML.match(/(<h[2-5][^>]*>.*?<\/h[2-5]>)/ig);
for (var i = 0; i < cateList.length; i++) {
if (/(<h2[^>]*>.*?<\/h2>)/ig.test(cateList[i])) {
n1++;
n2 = 0;
temp += '<dd class="cate-item1"><span>' + n1 + '</span><a href="#' + n1 + '">' + cateList[i].replace(/<[^>].*?>/g, "") + '</a></dd><div style="clear:both"></div>';
h2List[i1] = n1;
i1++;
} else {
if (/(<h3[^>]*>.*?<\/h3>)/ig.test(cateList[i])) {
n2++;
temp += '<dd class="cate-item2"><span>' + n1 + '.' + n2 + '</span><a href="#' + n1 + '_' + n2 + '">' + cateList[i].replace(/<[^>].*?>/g, "") + '</a></dd><div style="clear:both"></div>';
h3List[i2] = n1 + '_' + n2;
i2++;
n3 = 0;
} else {
n3++;
temp += '<dd class="cate-item3"><span>' + n1 + '.' + n2 + '.' + n3 + '</span><a href="#' + n1 + '_' + n2 + '_' + n3 + '">' + cateList[i].replace(/<[^>].*?>/g, "") + '</a></dd><div style="clear:both"></div>';
h4List[i3] = n1 + '_' + n2 + '_' + n3;
i3++;
}
}
}
temp += '</dl>';
left.innerHTML = temp; //默认第一个处于aitive状态
left.getElementsByTagName('dd')[0].className = left.getElementsByTagName('dd')[0].className + " active";
};
left.style.height = (document.documentElement.clientHeight - 200) + "px";
window.onresize = function () {
var array = document.getElementsByClassName('zone-box');
for (var s = 0; s < array.length; s++) {
if (array[s].getElementsByTagName('table').length > 0) {
buildDiv(array[s], array[s].getElementsByTagName('table')[0], 1);
}
}
left.style.height = (document.documentElement.clientHeight - 200) + "px";
}; //点击右侧书签添加active
if (left.addEventListener) {
left.addEventListener("click", function (e) {
for (var c = 0; c < left.getElementsByTagName('dd').length; c++) {
left.getElementsByTagName('dd')[c].className = left.getElementsByTagName('dd')[c].className.replace("active", "");
}
e.target.parentNode.className = e.target.parentNode.className + " active";
});
} else {
left.attachEvent("onclick", function (e) {
for (var c = 0; c < right.getElementsByTagName('dd').length; c++) {
left.getElementsByTagName('dd')[c].className = left.getElementsByTagName('dd')[c].className.replace("active", "");
}
e.srcElement.parentNode.className = e.srcElement.parentNode.className + " active";
})
}
window.onscroll = function () {
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
if (scrollTop >= 100) {
left.style.position = "fixed";
left.style.top = 10 + 'px';
} else {
left.style.position = "static";
}
}
</script>

左侧滚动条js的更多相关文章

  1. 自定义滚动条Js简版

    <!DOCTYPE html><html><head><meta charset="UTF-8"><title>自定义滚 ...

  2. 防刷新jq左侧滚动条导航展示

    html代码: <div class="fangchan_navcont">        <div class="fangchan_nav" ...

  3. javascript滚动条之ScrollBar.js

    ScrollBar.js是一个仅仅120行的滚动条JS插件,使用非常方便 详情阅读:https://git.oschina.net/wuquanyao/scrollbar.js/*========== ...

  4. gVIM+zencoding快速开发HTML/CSS/JS(适用WEB前端)

    一.真正解决了UTF-8中文乱码的各种问题(菜单乱码,内容乱码,提示信息乱码),不用担心WIN用默认编码写的东西在Linux乱码,或在Linux(zh_CN.UTF-8时)写的东西在WIN下乱码.在A ...

  5. js汉语转拼音(全拼、首字母、拼音首字母)

    新建js文件first_alphabet.js // JavaScript Document // 汉字拼音首字母列表 本列表包含了20902个汉字,用于配合 ToChineseSpell //函数使 ...

  6. 第三百五十节,Python分布式爬虫打造搜索引擎Scrapy精讲—selenium模块是一个python操作浏览器软件的一个模块,可以实现js动态网页请求

    第三百五十节,Python分布式爬虫打造搜索引擎Scrapy精讲—selenium模块是一个python操作浏览器软件的一个模块,可以实现js动态网页请求 selenium模块 selenium模块为 ...

  7. 二十九 Python分布式爬虫打造搜索引擎Scrapy精讲—selenium模块是一个python操作浏览器软件的一个模块,可以实现js动态网页请求

    selenium模块 selenium模块为第三方模块需要安装,selenium模块是一个操作各种浏览器对应软件的api接口模块 selenium模块是一个操作各种浏览器对应软件的api接口模块,所以 ...

  8. 《selenium2 python 自动化测试实战》(16)——js操作补充

    js修改readonly属性 我们看到这里日期框标签中有readonly属性,如果我们直接send_keys就无法输入内容,这时我们需要先去掉readonly属性: js ='document.get ...

  9. selenium--浏览器滚动条操作

    前戏 在进行web自动化的时候,selenium只能找当前屏幕上的标签,如果标签在当前页面没显示下,需要拖动滚动条才能查看到这个元素,这时候就要操作浏览器的滚动条,让当前页面显示这个元素才可以操作,在 ...

随机推荐

  1. hibernate注解方式来处理映射关系

    在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说,萝卜青菜,可有所爱,每个人都有自己喜欢的配置方式,我在试了这两种方式 ...

  2. JAVA核心技术I---JAVA基础知识(知识回顾)

    一:多态问题 class Father { public void hello() { System.out.println("Father says hello."); } } ...

  3. python 函数动态参数,名称空间,global,nonlocal

    ##################################总结######################################动态参数 *args:位置参数动态传参,接收到的是元 ...

  4. Tomcat、Weblogic、WebSphere、JBoss服务器的选择

    一.应用点 Tomcat是Apache基金会提供的Servlet容器,它支持JSP, Servlet和JDBC等J2EE关键技术,所以用户可以用Tomcat开发基于数据库,Servlet和JSP页面的 ...

  5. HDU 1030(三角数阵 数学)

    题意是问在给定的三角形数阵中从一个数到另一个数所要跨过的边数. 最初的时候很迷,除了发现每层的数字个数与层数间的关系和每层数最后一个数与层数的关系外什么也没看出来,打算先求出数字所在的层数,然后计算到 ...

  6. zookeeper安装使用及工作原理分析

    1. Zookeeper概念简介 Zookeeper是一个分布式协调服务:就是为用户的分布式应用程序提供协调服务,它是集群的管理者,监视着集群中各个节点的状态,根据节点提交的反馈进行下一步合理操作. ...

  7. 经典文摘:饿了么的 PWA 升级实践(结合Vue.js)

    自 Vue.js 官方推特第一次公开到现在,我们就一直在进行着将饿了么移动端网站升级为 Progressive Web App 的工作.直到近日在 Google I/O 2017 上登台亮相,才终于算 ...

  8. mysql5.7安装(正确安装)实战

    一.二进制免编译包安装  参考:http://www.apelearn.com/bbs/forum.php?mod=viewthread&tid=10105&highlight=mys ...

  9. luogu 2371 墨墨的等式

    1.背包dp #include<bits/stdc++.h> #define rep(i,x,y) for(register int i=x;i<=y;i++) #define ll ...

  10. 【C++】 网络编程 01

    趁着计算机网络这门课布置了课程设计,学习下网络编程. 系统:Ubuntu 14.01... 1. 关于Socket(套接字) 1.1 套接字是存在于运输层和应用层间的抽象层,通过它来区分不同应用程序进 ...