Javascript实现的分页函数


Posted in Javascript onFebruary 07, 2007

/**
 * 分页类构造
 * 参数 nTotalList: 总条数
 * 参数 nPageSize: 每页显示条数
 * 参数 nPageNum: 当前页码
 * 参数 sPageUrl: 分页链接的URL,页码以[pn]代替,输出时将被替换为实际页码
 * 参数 nPageListSize: 页码列表(下拉框)中显示的最多页码条数。该参数可省略,默认100
 */
function Pagination(nTotalList, nPageSize, nPageNum, sPageUrl, nPageListSize) {
  this.totalList = nTotalList;
  this.pageSize = nPageSize;
  this.pageNum = nPageNum;
  if (nTotalList == 0)
    this.totalPages = 1;
  else
    this.totalPages = Math.floor((this.totalList-1)/this.pageSize + 1);
  this.pageUrl = sPageUrl;
  if (arguments[4])
    this.pageListSize = nPageListSize;
  else
    this.pageListSize = 100;
}

/**
 * 生成分页,将HTML直接输出
 * 无参数
 * 无返回值
 */
Pagination.prototype.generate = function() {
  var output = "";
  output += "<table width=\"98%\" cellspacing=\"1\" cellpadding=\"3\" align=\"center\"><tr><td align=\"right\">";
  output += "共 " + this.totalList + " 条 每页 " + this.pageSize + " 条 当前第 ";
  output += "<select onchange=\"if(this.value)location.href='" + this.pageUrl + "'.replace(/\\[pn\\]/,";
  output += "this.value);\" align=\"absMiddle\" style=\"font:normal 9px Verdana,Arial,宋体;\">";
  var firstPage = this.pageNum - Math.floor(this.pageListSize/2);
  if (firstPage < 1)
    firstPage = 1;
  var lastPage = firstPage + this.pageListSize - 1;
  if (lastPage > this.totalPages) {
    lastPage = this.totalPages;
    firstPage = lastPage - this.pageListSize + 1;
    if (firstPage < 1)
      firstPage = 1;
  }
  if (firstPage > 1) {
    output += "<option value=\"1\">1</option>";
    if (firstPage > 2)
      output += "<option value=\"\">…</option>";
  }
  for (var p = firstPage; p <= lastPage; p++) {
    output += "<option value=\"" + p + "\"";
    if (p == this.pageNum)
      output += " selected=\"yes\"";
    output += ">" + p + "</option>";
  }
  if (lastPage < this.totalPages) {
    if (lastPage < this.totalPages - 1)
      output += "<option value=\"\">…</option>";
    output += "<option value=\"" + this.totalPages + "\">" + this.totalPages + "</option>";
  }
  if (this.pageNum > this.totalPages)
    output += "<option value=\"\" selected=\"yes\">页码超出范围</option>";
  output += "</select>";
  output += "/" + this.totalPages + " 页 ";
  if (this.pageNum == 1) {
    output += "[首页] ";
    output += "[上页] ";
  }
  else {
    output += "<a href=\"" + this.pageUrl.replace(/\[pn\]/, "1") + "\">[首页]</a> ";
    output += "<a href=\"" + this.pageUrl.replace(/\[pn\]/, this.pageNum-1) + "\">[上页]</a> ";
  }
  if (this.pageNum == this.totalPages) {
    output += "[下页] ";
    output += "[尾页]";
  }
  else {
    output += "<a href=\"" + this.pageUrl.replace(/\[pn\]/, this.pageNum+1) + "\">[下页]</a> ";
    output += "<a href=\"" + this.pageUrl.replace(/\[pn\]/, this.totalPages) + "\">[尾页]</a> ";
  }
  output += "</td></tr></table>";
  document.writeln(output);
}

Javascript 相关文章推荐
Javascript学习笔记6 prototype的提出
Jan 11 Javascript
js类型检查实现代码
Oct 29 Javascript
浅析jquery的作用与优势
Dec 02 Javascript
使用typeof判断function是否存在于上下文
Aug 14 Javascript
详谈jQuery操纵DOM元素属性 attr()和removeAtrr()方法
Jan 22 Javascript
javascript获得当前的信息的一些常用命令
Feb 25 Javascript
深入理解Angular2 模板语法
Aug 07 Javascript
jQuery实现底部浮动窗口效果
Sep 07 Javascript
js实现tab选项卡切换功能
Jan 13 Javascript
vue-cli3全面配置详解
Nov 14 Javascript
Vue如何将页面导出成PDF文件
Aug 17 Javascript
你不知道的 TypeScript 高级类型(小结)
Aug 28 Javascript
[转]JS宝典学习笔记
Feb 07 #Javascript
HTML页面如何象ASP一样接受参数
Feb 07 #Javascript
DOM相关内容速查手册
Feb 07 #Javascript
索趣科技的答案
Feb 07 #Javascript
JS模拟多线程
Feb 07 #Javascript
使用prototype.js进行异步操作
Feb 07 #Javascript
最新优化收藏到网摘代码(digg,diigo)
Feb 07 #Javascript
You might like
php str_replace的替换漏洞
2008/03/15 PHP
PHP 采集程序中常用的函数
2009/12/09 PHP
理解PHP中的stdClass类
2014/04/18 PHP
浅谈php自定义错误日志
2015/02/13 PHP
java script编程起步(第三课)
2007/01/10 Javascript
JavaScript调用Activex控件的事件的实现方法
2010/04/11 Javascript
js定时器的使用(实例讲解)
2014/01/06 Javascript
JS实现浏览器状态栏显示时间的方法
2015/10/27 Javascript
js操作数组函数实例小结
2015/12/10 Javascript
JS Ajax请求如何防止重复提交
2016/06/13 Javascript
使用Angular.js实现简单的购物车功能
2016/11/21 Javascript
Node.js环境下Koa2添加travis ci持续集成工具的方法
2017/06/19 Javascript
js案例之鼠标跟随jquery版(实例讲解)
2017/07/21 jQuery
AngularJS中controller控制器继承的使用方法
2017/11/03 Javascript
快速搭建React的环境步骤详解
2017/11/06 Javascript
前端html中jQuery实现对文本的搜索功能并把搜索相关内容显示出来
2017/11/14 jQuery
node.js学习笔记之koa框架和简单爬虫练习
2018/12/13 Javascript
ES6中new Function()语法及应用实例分析
2020/02/19 Javascript
Vue实现开关按钮拖拽效果
2020/09/22 Javascript
python实现k均值算法示例(k均值聚类算法)
2014/03/16 Python
Python针对给定列表中元素进行翻转操作的方法分析
2018/04/27 Python
Python Numpy 自然数填充数组的实现
2019/11/28 Python
jupyter notebook的安装与使用详解
2020/05/18 Python
使用keras2.0 将Merge层改为函数式
2020/05/23 Python
Python xlrd模块导入过程及常用操作
2020/06/10 Python
python定义类的简单用法
2020/07/24 Python
机械专业毕业生自荐信
2013/11/02 职场文书
代理协议书
2014/04/22 职场文书
思想作风纪律整顿心得体会
2014/09/04 职场文书
刑事代理授权委托书
2014/09/17 职场文书
临床医学生职业规划书范文
2014/10/25 职场文书
先进员工事迹材料
2014/12/20 职场文书
党纪处分决定书
2015/06/24 职场文书
七一表彰大会简报
2015/07/20 职场文书
python神经网络Xception模型
2022/05/06 Python
JS函数式编程实现XDM一
2022/06/16 Javascript