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 相关文章推荐
this[] 指的是什么内容 讨论
Mar 24 Javascript
jQuery 获取URL参数的插件
Mar 04 Javascript
zeroclipboard复制到剪切板的flash
Aug 04 Javascript
Javascript的一种模块模式
Sep 08 Javascript
JQuery boxy插件在IE中边角图片不显示问题的解决
May 20 Javascript
ES6中的数组扩展方法
Aug 26 Javascript
利用Jquery队列实现根据输入数量显示的动画
Sep 01 Javascript
详解JavaScript调用栈、尾递归和手动优化
Jun 03 Javascript
使用async-validator编写Form组件的方法
Jan 10 Javascript
使用rollup打包JS的方法步骤
Dec 05 Javascript
Vue组件间通信方法总结(父子组件、兄弟组件及祖先后代组件间)
Apr 17 Javascript
了不起的11个JavaScript代码重构最佳实践小结
Jan 11 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部分常见问题总结
2008/03/27 PHP
php数组中包含中文的排序方法
2014/06/03 PHP
[原创]php正则删除img标签的方法示例
2017/05/27 PHP
Laravel中批量赋值Mass-Assignment的真正含义详解
2017/09/29 PHP
redis+php实现微博(二)发布与关注功能详解
2019/09/23 PHP
Jquery操作radio的简单实例
2014/01/06 Javascript
JavaScript fontsize方法入门实例(按照指定的尺寸来显示字符串)
2014/10/17 Javascript
jQuery实现仿腾讯微博滑出效果报告每日天气的方法
2015/05/11 Javascript
JS基于VML技术实现的五角星礼花效果代码
2015/10/26 Javascript
JavaScript事件学习小结(五)js中事件类型之鼠标事件
2016/06/09 Javascript
用file标签实现多图文件上传预览
2017/02/14 Javascript
JS实现颜色动态淡化效果
2017/03/06 Javascript
JavaScript面向对象精要(上部)
2017/09/12 Javascript
详解vue项目首页加载速度优化
2017/10/18 Javascript
vue.js实现照片放大功能
2020/06/23 Javascript
JavaScript数组常用的增删改查与其他属性详解
2020/10/13 Javascript
Flask SQLAlchemy一对一,一对多的使用方法实践
2013/02/10 Python
Python实现爬虫设置代理IP和伪装成浏览器的方法分享
2018/05/07 Python
Python定义二叉树及4种遍历方法实例详解
2018/07/05 Python
python GUI库图形界面开发之PyQt5计数器控件QSpinBox详细使用方法与实例
2020/02/28 Python
Python字符串hashlib加密模块使用案例
2020/03/10 Python
解决pycharm中的run和debug失效无法点击运行
2020/06/09 Python
一家专门做特卖的网站:唯品会
2016/10/09 全球购物
Gap英国官网:Gap UK
2018/07/18 全球购物
军用级手机壳,专为冒险而建:Zizo Wireless
2019/08/07 全球购物
管理站站长岗位职责
2013/11/27 职场文书
二年级数学教学反思
2014/01/21 职场文书
策划创业计划书
2014/02/06 职场文书
工商管理本科生求职信
2014/07/13 职场文书
2014年重阳节老干部座谈会局领导发言稿
2014/09/25 职场文书
党员个人批评与自我批评
2014/10/14 职场文书
建议书格式
2015/02/04 职场文书
升职自荐信范文
2015/03/27 职场文书
2019年励志签名:致拼搏路上的自己
2019/10/11 职场文书
python工具dtreeviz决策树可视化和模型可解释性
2022/03/03 Python
游戏《我的世界》澄清Xbox版暂无计划加入光追
2022/04/03 其他游戏