javascript分页代码实例分享(js分页)


Posted in Javascript onDecember 13, 2013

调用:

var pageChange = function (index) {
            var html = pager("divid", index, 5, 1000, pageChange, { showGoTo: false, showFirst: false });
        }

实现:

pager = function (divPager, pageIndex, pageSize, totalCount, pageChange, opt) {     var theOpt = {
         barSize: 5, //分页条显示的页码数   
         barTemplate: "{bar}  共{totalPage}页{totalCount}条 {goto}", //显示模板
         autoHide: true, //是否自动隐藏
         showFirst: true, //在totalPage>barSize时是自动否显示第一页链接
         showLast: true, //在totalPage>barSize时是自动否显示最后一页链接
         showGoTo: true, //是否显示GoTo
         autoHideGoTo: true //如果太少是否自动隐藏GoTo
     };
     if (opt) {
         if (opt.barSize)
             theOpt.barSize = opt.barSize;
         if (opt.barTemplate)
             theOpt.barTemplate = opt.barTemplate;
         if (opt.autoHide == false)
             theOpt.autoHide = false;
         if (opt.showFirst == false)
             theOpt.showFirst = false;
         if (opt.showLast = false)
             theOpt.showLast = false;
         if (opt.showGoTo == false)
             theOpt.showGoTo = false;
         if (opt.autoHideGoTo == false)
             theOpt.autoHideGoTo = false;
     }
     var handles = window.myPagerChanges = (function (x) { return x; } (window.myPagerChanges || {}));
     if (!myPagerChanges[divPager]) myPagerChanges[divPager] = pageChange;
     var startPage = 0;  //分页条起始页
     var endPage = 0;    //分页条终止页
     var showFirst = true;
     var showLast = true;
 
     if (isNaN(pageIndex)) {
         pageIndex = 1;
     }
     pageIndex = parseInt(pageIndex);
     if (pageIndex <= 0)
         pageIndex = 1;
     if (pageIndex * pageSize > totalCount) {
         pageIndex = Math.ceil(totalCount / pageSize);
     }
     if (totalCount == 0) { //如果没数据
         document.getElementById(divPager).innerHTML = "";
         return "";
     }
     var totalPage = Math.ceil(totalCount / pageSize);
     if (theOpt.autoHide && totalCount <= pageSize) {   //自动隐藏
         document.getElementById(divPager).innerHTML = "";
         return "";
     }
     if (totalPage <= theOpt.barSize) {
         startPage = 1;
         endPage = this.totalPage;
         theOpt.showLast = theOpt.showFirst = false;
     }
     else {
         if (pageIndex <= Math.ceil(theOpt.barSize / 2)) { //最前几页时
             startPage = 1;
             endPage = theOpt.barSize;
             theOpt.showFirst = false;
         }
         else if (pageIndex > (totalPage - theOpt.barSize / 2)) { //最后几页时
             startPage = totalPage - theOpt.barSize + 1;
             endPage = totalPage;
             theOpt.showLast = false;
         }
         else {                                          //中间的页时
             startPage = pageIndex - Math.ceil(theOpt.barSize / 2) + 1;
             endPage = pageIndex + Math.floor(theOpt.barSize / 2);
         }
         if (totalPage <= (theOpt.barSize * 1.5)) {
             theOpt.showLast = theOpt.showFirst = false;
         }
     }
     function _getLink(index, txt) {
         if (!txt) txt = index;
         return "<a href='javascript:;' style='margin: 2px 5px;border: 1px solid #6d8cad;color: #0269BA;padding: 2px 5px;text-decoration: none;' onclick='myPagerChanges[\"" + divPager + "\"](" + index + ")'>" + txt + "</a>";
     }
     var barHtml = "";  //分页条
     barHtml += pageIndex == 1 ? "" : _getLink(pageIndex - 1, "上一页");
     if (theOpt.showFirst) {
         barHtml += _getLink(1) + "<span>...</span>";
     }
     for (var index = startPage; index <= endPage; index++) {
         if (index == pageIndex) {
             barHtml += "<span style='color:red;font-weight:blod; '>" + index + "</span>";
         }
         else {
             barHtml += _getLink(index);
         }
     }
     if (theOpt.showLast) {
         barHtml += "<span>...</span>" + _getLink(totalPage);
     }
     barHtml += pageIndex == totalPage ? "" : _getLink(pageIndex + 1, "下一页");
     var gotoHtml = "";  //goto框及按钮
     if (theOpt.showGoTo && theOpt.barTemplate.indexOf("{goto}") > 0) {
         if ((theOpt.autoHideGoTo && totalPage > 15) || theOpt.autoHideGoTo == false) {
             var txtid = divPager + "_goIndex";
             var indexVal = "document.getElementById(\"" + txtid + "\").value";
             gotoHtml += "<input type='text' onkeypress='if(event.keyCode==13){myPagerChanges[\"" + divPager + "\"](" + indexVal + ")}' id='" + txtid + "' value=" + pageIndex + " style='width:30px'>";
             gotoHtml += " <input type='button' class='page_bg' value='go' onclick='myPagerChanges[\"" + divPager + "\"](" + indexVal + ")'>";
         }
     }
     //替换模板
     var pagerHtml = theOpt.barTemplate.replace("{bar}", barHtml)
                               .replace("{totalCount}", totalCount)
                               .replace("{pageIndex}", pageIndex)
                               .replace("{totalPage}", totalPage)
                               .replace("{goto}", gotoHtml);
     document.getElementById(divPager).innerHTML = pagerHtml;
     return pagerHtml;
 };
Javascript 相关文章推荐
javascript学习随笔(使用window和frame)的技巧
Mar 08 Javascript
jquery 实现的全选和反选
Apr 15 Javascript
Javascript 面向对象 对象(Object)
May 13 Javascript
Javascript 面向对象编程(coolshell)
Mar 18 Javascript
拉动滚动条加载数据的jquery代码
May 03 Javascript
jquery教程限制文本框只能输入数字和小数点示例分享
Jan 13 Javascript
javascript获取web应用根目录的方法
Feb 12 Javascript
JavaScript数组去重的五种方法
Nov 05 Javascript
js实现select二级联动下拉菜单
Apr 17 Javascript
Js利用console计算代码运行时间的方法示例
Sep 24 Javascript
node中使用es6/7/8(支持性与性能)
Mar 28 Javascript
js+canvas实现刮刮奖功能
Sep 13 Javascript
jquery 操作iframe的几种方法总结
Dec 13 #Javascript
异步动态加载JS并运行(示例代码)
Dec 13 #Javascript
JQuery中$.ajax()方法参数详解及应用
Dec 12 #Javascript
js setTimeout()函数介绍及应用以倒计时为例
Dec 12 #Javascript
jquery如何获取复选框的值
Dec 12 #Javascript
Jquery创建一个层当鼠标移动到层上面不消失效果
Dec 12 #Javascript
jQuery的each终止或跳过示例代码
Dec 12 #Javascript
You might like
php批量上传的实现代码
2013/06/09 PHP
firebug的一个有趣现象介绍
2011/11/30 Javascript
TimergliderJS 一个基于jQuery的时间轴插件
2011/12/07 Javascript
Node.js和PHP根据ip获取地理位置的方法
2014/03/14 Javascript
javascript实现多级联动下拉菜单的方法
2015/02/06 Javascript
js仿苹果iwatch外观的计时器代码分享
2015/08/26 Javascript
向JavaScript的数组中添加元素的方法小结
2015/10/24 Javascript
详解jQuery停止动画——stop()方法的使用
2016/12/14 Javascript
Html5 js实现手风琴效果
2020/04/17 Javascript
js仿微博动态栏功能
2017/02/22 Javascript
Vue.js数据绑定之data属性
2017/07/07 Javascript
详解如何去除vue项目中的#——History模式
2017/10/13 Javascript
使用veloticy-ui生成文字动画效果
2018/02/08 Javascript
浅谈Vue.use的使用
2018/08/29 Javascript
详解关于html,css,js三者的加载顺序问题
2019/04/10 Javascript
ES6学习笔记之let与const用法实例分析
2020/01/22 Javascript
JS浏览器BOM常见操作实例详解
2020/04/27 Javascript
vue集成openlayers加载geojson并实现点击弹窗教程
2020/09/24 Javascript
python实现线程池的方法
2015/06/30 Python
Windows上配置Emacs来开发Python及用Python扩展Emacs
2015/11/20 Python
windows下python之mysqldb模块安装方法
2017/09/07 Python
用python制作游戏外挂
2018/01/04 Python
使用python3实现操作串口详解
2019/01/01 Python
Python3 文章标题关键字提取的例子
2019/08/26 Python
教你如何用python操作摄像头以及对视频流的处理
2020/10/12 Python
data:image data url 文件转为Blob上传后端的方法
2019/07/16 HTML / CSS
行政工作个人的自我评价
2014/02/13 职场文书
新疆民族团结演讲稿
2014/08/27 职场文书
全国法制宣传日活动总结
2015/05/05 职场文书
交通安全月活动总结
2015/05/08 职场文书
教师个人师德工作总结2015
2015/05/12 职场文书
律政俏佳人观后感
2015/06/09 职场文书
社区低保工作总结2015
2015/07/23 职场文书
解决MySQL存储时间出现不一致的问题
2021/04/28 MySQL
MySQL如何构建数据表索引
2021/05/13 MySQL
教你如何用cmd快速登录服务器
2022/06/10 Servers