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 eval函数深入认识
Feb 21 Javascript
jQuery 使用手册(二)
Sep 23 Javascript
ASP小贴士/ASP Tips javascript tips可以当桌面
Dec 10 Javascript
js 判断脚本加载完毕的代码
Jul 13 Javascript
jQuery EasyUI API 中文文档 - ComboGrid 组合表格
Oct 13 Javascript
JavaScript仿静态分页实现方法
Aug 04 Javascript
javascript与jquery中的this关键字用法实例分析
Dec 24 Javascript
jQuery时间插件jquery.clock.js用法实例(5个示例)
Jan 14 Javascript
利用JS实现文字的聚合动画效果
Jan 22 Javascript
微信小程序获取手机号授权用户登录功能
Nov 09 Javascript
JavaScript中Object值合并方法详解
Dec 22 Javascript
基于node搭建服务器,写接口,调接口,跨域的实例
May 13 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
在apache下限制每个虚拟主机的并发数!!!!
2006/10/09 PHP
在PHP中使用与Perl兼容的正则表达式
2006/11/26 PHP
PHP curl 并发最佳实践代码分享
2012/09/05 PHP
php将字符串转换成16进制的方法
2015/03/17 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
2019/03/18 PHP
Javascript之this关键字深入解析
2013/11/12 Javascript
iframe窗口高度自适应的实现方法
2014/01/08 Javascript
Jquery设置attr的disabled属性控制某行显示或者隐藏
2014/09/25 Javascript
jQuery中Ajax的get、post等方法详解
2015/01/20 Javascript
JavaScript中定义函数的三种方法
2015/03/12 Javascript
JavaScript 动态加载脚本和样式的方法
2015/04/13 Javascript
javascript排序函数实现数字排序
2015/06/26 Javascript
AngularJS中的$watch(),$digest()和$apply()区分
2016/04/04 Javascript
jQuery实现标签页效果实战(4)
2017/02/08 Javascript
jQuery validate 验证radio实例
2017/03/01 Javascript
node.js基于fs模块对系统文件及目录进行读写操作的方法详解
2017/11/10 Javascript
基于JavaScript 性能优化技巧心得(分享)
2017/12/11 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
2018/09/18 Javascript
vue-cli在 history模式下的配置详解
2019/11/26 Javascript
我所理解的JavaScript中的this指向
2020/09/04 Javascript
六个窍门助你提高Python运行效率
2015/06/09 Python
简单了解什么是神经网络
2017/12/23 Python
详解如何在python中读写和存储matlab的数据文件(*.mat)
2018/02/24 Python
通过python爬虫赚钱的方法
2019/01/29 Python
对tensorflow 中tile函数的使用详解
2020/02/07 Python
Python3 assert断言实现原理解析
2020/03/02 Python
如何使用Python自动生成报表并以邮件发送
2020/10/15 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
2021/01/29 Python
css3过渡_动力节点Java学院整理
2017/07/11 HTML / CSS
HTML5 Canvas标签使用收录
2009/07/07 HTML / CSS
大学毕业生简单自荐信
2013/11/05 职场文书
解除合同协议书
2014/04/17 职场文书
Django展示可视化图表的多种方式
2021/04/08 Python
吉利入股戴姆勒后smart“长大了”
2022/04/21 数码科技
html用代码制作虚线框怎么做? dw制作虚线圆圈的技巧
2022/12/24 HTML / CSS