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 相关文章推荐
jQuery Autocomplete自动完成插件
Jul 17 Javascript
js实现从数组里随机获取元素
Jan 12 Javascript
JQuery记住用户名密码实现下次自动登录功能
Apr 27 Javascript
基于jQuery实现表格的查看修改删除
Aug 01 Javascript
Vue.js render方法使用详解
Apr 05 Javascript
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
Apr 19 Javascript
浅谈angular4生命周期钩子
Sep 05 Javascript
通过jquery获取上传文件名称、类型和大小的实现代码
Apr 19 jQuery
JS使用canvas中的measureText方法测量字体宽度示例
Feb 02 Javascript
微信小游戏之使用three.js 绘制一个旋转的三角形
Jun 10 Javascript
vue router返回到指定的路由的场景分析
Nov 10 Javascript
Vue $attrs &amp; inheritAttr实现button禁用效果案例
Dec 07 Vue.js
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
基于mysql的bbs设计(一)
2006/10/09 PHP
php中print(),print_r(),echo()的区别详解
2014/12/01 PHP
php通过curl添加cookie伪造登陆抓取数据的方法
2016/04/02 PHP
基于JQuery的Select选择框的华丽变身
2011/08/23 Javascript
jQuery(1.6.3) 中css方法对浮动的实现缺陷分析
2011/09/09 Javascript
兼容主流浏览器的jQuery+CSS 实现遮罩层的简单代码
2014/10/14 Javascript
JavaScript中的Math.LN2属性用法详解
2015/06/12 Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
2016/04/18 Javascript
JavaScript 数组的深度复制解析
2016/11/02 Javascript
关于json字符串与实体之间的严格验证代码
2016/11/10 Javascript
JS验证不重复验证码
2017/02/10 Javascript
Angular多选、全选、批量选择操作实例代码
2017/03/10 Javascript
微信小程序开发之toast提示插件使用示例
2017/06/08 Javascript
react-router v4如何使用history控制路由跳转详解
2018/01/09 Javascript
4个顶级开源JavaScript图表库
2018/09/29 Javascript
vue使用Proxy实现双向绑定的方法示例
2019/03/20 Javascript
Vue动态修改网页标题的方法及遇到问题
2019/06/09 Javascript
微信小程序判断页面是否从其他页面返回的实例代码
2019/07/03 Javascript
layui问题之自动滚动二级iframe页面到指定位置的方法
2019/09/18 Javascript
微信小程序实现点击按钮后修改颜色
2019/12/05 Javascript
基于vue实现探探滑动组件功能
2020/05/29 Javascript
[10:18]2018DOTA2国际邀请赛寻真——找回自信的TNCPredator
2018/08/13 DOTA
Django基础之Model操作步骤(介绍)
2017/05/27 Python
Python中的random.uniform()函数教程与实例解析
2019/03/02 Python
详解Python连接MySQL数据库的多种方式
2019/04/16 Python
python3.6环境安装+pip环境配置教程图文详解
2019/06/20 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
2019/07/04 Python
django多个APP的urls设置方法(views重复问题解决)
2019/07/19 Python
python创建ArcGIS shape文件的实现
2019/12/06 Python
Python While循环语句实例演示及原理解析
2020/01/03 Python
简述python Scrapy框架
2020/08/17 Python
Python环境使用OpenCV检测人脸实现教程
2020/10/19 Python
巴西最大的在线约会网站:ParPerfeito
2018/07/11 全球购物
广告公司文案策划岗位职责
2015/04/14 职场文书
人工作失职检讨书
2015/05/05 职场文书
win sever 2022如何占用操作主机角色
2022/06/25 Servers