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 相关文章推荐
jquery URL参数判断,确定菜单样式
May 31 Javascript
使用Firebug对js进行断点调试的图文方法
Apr 02 Javascript
javascript打印大全(打印页面设置/打印预览代码)
Mar 29 Javascript
js实现键盘上下左右键选择文字并显示在文本框的方法
May 07 Javascript
详解angularJs指令的3种绑定策略
Apr 13 Javascript
让网站自动生成章节目录索引的多个js代码
Jan 07 Javascript
Vue组件之单向数据流的解决方法
Nov 10 Javascript
vue-router 中 meta的用法详解
Nov 01 Javascript
vue 实现v-for循环回来的数据动态绑定id
Nov 07 Javascript
vue实现移动端图片上传功能
Dec 23 Javascript
如何基于javascript实现贪吃蛇游戏
Feb 09 Javascript
JS前端宏任务微任务及Event Loop使用详解
Jul 23 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
Win2000+Apache+MySql+PHP4+PERL安装使用小结
2006/10/09 PHP
php环境配置 php5 mysql5 apache2 phpmyadmin安装与配置
2006/11/17 PHP
收集的网上用的ajax之chat.js文件
2007/04/08 Javascript
几个常用的JavaScript字符串处理函数 - split()、join()、substring()和indexOf()
2009/06/02 Javascript
使用JavaScript库还是自己写代码?
2010/01/28 Javascript
js 文件引入实现代码
2010/04/23 Javascript
在VS2008中使用jQuery智能感应的方法
2010/12/30 Javascript
js字符串截取函数substr substring slice使用对比
2013/11/27 Javascript
js获取和设置属性的方法
2014/02/20 Javascript
javascript冒泡排序小结
2016/04/10 Javascript
JavaScript中0和&quot;&quot;比较引发的问题
2016/05/26 Javascript
关于动态执行代码(js的Eval)实例详解
2016/08/15 Javascript
Bootstrap精简教程中秋大放送
2016/09/15 Javascript
JS对象深度克隆实例分析
2017/03/16 Javascript
JS利用正则表达式实现简单的密码强弱判断实例
2017/06/16 Javascript
p5.js入门教程之鼠标交互的示例
2018/03/16 Javascript
详解VUE 对element-ui中的ElTableColumn扩展
2018/03/28 Javascript
JS伪继承prototype实现方法示例
2018/06/20 Javascript
vue插件mescroll.js实现移动端上拉加载和下拉刷新
2019/03/07 Javascript
使用原生javascript开发计算器实例代码
2021/02/21 Javascript
[01:01:01]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第一场 10.29
2020/10/29 DOTA
linux系统使用python获取cpu信息脚本分享
2014/01/15 Python
Django1.3添加app提示模块不存在的解决方法
2014/08/26 Python
跟老齐学Python之重回函数
2014/10/10 Python
Python中获取网页状态码的两个方法
2014/11/03 Python
Python3 操作符重载方法示例
2017/11/23 Python
python logging重复记录日志问题的解决方法
2018/07/12 Python
Python面向对象基础入门之设置对象属性
2018/12/11 Python
钉钉企业内部H5微应用开发详解
2020/05/12 HTML / CSS
萨克斯第五大道英国:Saks Fifth Avenue英国
2019/04/01 全球购物
业务经理岗位职责
2013/11/11 职场文书
小学体育教学反思
2014/01/31 职场文书
企业军训感言
2014/02/08 职场文书
离婚协议书范文2014(夫妻感情破裂)
2014/12/14 职场文书
仓库统计员岗位职责
2015/04/14 职场文书
2015年音乐教师个人工作总结
2015/05/20 职场文书