Javascript实现的分页函数


Posted in Javascript onDecember 22, 2006

From: IECN.Net ; Author: 钟钟

/**
 * 分页类构造
 * 参数 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 相关文章推荐
js获取height和width的方法说明
Jan 06 Javascript
js定时器的使用(实例讲解)
Jan 06 Javascript
javascript中的事件代理初探
Mar 08 Javascript
JQuery下拉框应用示例介绍
Apr 23 Javascript
跟我学习javascript的垃圾回收机制与内存管理
Nov 23 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
Sep 01 Javascript
原生js封装自定义滚动条
Mar 24 Javascript
javascript实现非常简单的小数取整功能示例
Jun 13 Javascript
JavaScript通过mouseover()实现图片变大效果的示例
Dec 20 Javascript
一文了解Vue中的nextTick
May 06 Javascript
通过说明与示例了解js五种设计模式
Jun 17 Javascript
Vue使用Clipboard.JS在h5页面中复制内容实例详解
Sep 03 Javascript
一些常用的Javascript函数
Dec 22 #Javascript
用Javascript实现UTF8编码转换成gb2312编码
Dec 22 #Javascript
使用Modello编写JavaScript类
Dec 22 #Javascript
获取Javscript执行函数名称的方法
Dec 22 #Javascript
Javascript开发包大全整理
Dec 22 #Javascript
用js重建星际争霸
Dec 22 #Javascript
js版本A*寻路算法
Dec 22 #Javascript
You might like
php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
2011/11/07 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
2014/04/08 PHP
PHP使用CURL获取302跳转后的地址实例
2014/05/04 PHP
php json_encode()函数返回json数据实例代码
2014/10/10 PHP
php基于curl实现的股票信息查询类实例
2016/11/11 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
浅谈laravel中的关联查询with的问题
2019/10/10 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
JS实现简单的Canvas画图实例
2013/07/04 Javascript
Javascript函数的参数
2015/07/16 Javascript
javascript字符串函数汇总
2015/12/06 Javascript
分享几种比较简单实用的JavaScript tabel切换
2015/12/31 Javascript
详解本地Node.js服务器作为api服务器的解决办法
2017/02/28 Javascript
ionic选择多张图片上传的示例代码
2017/10/10 Javascript
ES6解构赋值实例详解
2017/10/31 Javascript
[00:30]塑造者的传承礼包-戴泽“暗影之焰”套装展示视频
2014/04/04 DOTA
[06:07]刀塔密之二:攻之吾命受之吾幸
2014/07/03 DOTA
Python实现选择排序
2017/06/04 Python
Python将多个excel文件合并为一个文件
2018/01/03 Python
Django使用Channels实现WebSocket的方法
2019/07/28 Python
Python3.7 pyodbc完美配置访问access数据库
2019/10/03 Python
opencv python在视屏上截图功能的实现
2020/03/05 Python
css3的图形3d翻转效果应用示例
2014/04/08 HTML / CSS
CSS3 实现穿梭星空动画
2020/11/13 HTML / CSS
基于HTML5的WebSocket的实例代码
2018/08/15 HTML / CSS
俄罗斯的精英皮具:Wittchen
2018/01/29 全球购物
世界上最大的在线汽车租赁预订平台:Rentalcars.com(支持中文)
2018/10/12 全球购物
Linux Interview Questions For software testers
2012/06/02 面试题
就业自荐信
2013/12/04 职场文书
简历上的自我评价怎么写
2014/01/28 职场文书
网管求职信
2014/03/03 职场文书
十佳文明家庭事迹
2014/05/25 职场文书
代办委托书怎么写
2014/08/01 职场文书
部队反四风对照检查材料
2014/09/26 职场文书
一篇文章带你学习Mybatis-Plus(新手入门)
2021/08/02 Java/Android
PHP中国际化的字符串排序和比较对象详解
2021/08/23 PHP