<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. Spring JPA学习笔记

    目录 什么是JPA? 引入配置 新建一个Entity Bean类 JPA的增删改查 新建操作接口 新建测试类 总结 什么是JPA? 什么是JDBC知道吧?数据库有Mysql,SQL Server,Or ...

  2. python 模块一(random,counter,defaultdict,time,wraps,reduce) 栈 队列 双向队列

    ####################总结####################### 模块:你写的py文件 引用其他模块 1.import 模块 2.from 模块 import 功能,类,变量 ...

  3. Hadoop记录-变更

    1.安装salt-minion sed -i 's/^#//g' /etc/yum.repos.d/centos7.4.repo sed -i 's/enabled=0/enabled=1/g' /e ...

  4. Tips and Tricks for Debugging in chrome

    Tips and Tricks for Debugging in chrome Pretty print On sources panel ,clicking on the {} on the bot ...

  5. 解析ArcGis的字段计算器(一)——数值型数据计算,从“面积计算”开始

    先来点儿背景知识铺垫: ArcMap的字段计算器提供了两种脚本语言的支持用以计算,两种脚本语言是VBScript与Python. 多数人选择使用前者,因为它的基本函数和Excel的函数貌似一样.注意我 ...

  6. [Java JNI] [Windows] [Visual Studio] [DLL] [UnsatisfiedLinkError]

    有时候使用 GCC for Windows 生成 DLL 动态链接库时, 由于各种原因, 即使加载了动态链接库, JVM 仍然找不到符号, 从而产生 java.lang.UnsatisfiedLink ...

  7. 十一、移植优化---CONFIG 优化进 menuconfig(2)

    11.3 jz2440.h 中的剩余宏移植 11.3.1 CONFIG_SYS_TEXT_BASE CONFIG_SYS_TEXT_BASE:设置系统代码段的基地址,设为 0x0:menuconfig ...

  8. C# WinForm开发系列 - Crystal Report水晶报表

    转自:ttp://www.cnblogs.com/peterzb/archive/2009/07/11/1521325.html 水晶报表(Crystal Report)是业内最专业.功能最强的报表系 ...

  9. python-类型转化

    s='1234' a=int(s)     字符串转换成整数 s=str(a)    整数转换成字符串

  10. [C++]PAT乙级1010. 一元多项式求导 (25/25)

    /* 1010. 一元多项式求导 (25) 设计函数求一元多项式的导数.(注:x^n(n为整数)的一阶导数为n*x^n-1.) 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1 ...