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 相关文章推荐
js的一些常用方法小结
Jun 29 Javascript
原生JS和JQuery动态添加、删除表格行的方法
May 28 Javascript
详解JavaScript表单验证(E-mail 验证)
Mar 31 Javascript
js实现数组内数据的上移和下移的实例
Nov 14 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
May 15 Javascript
vue3.0 CLI - 2.6 - 组件的复用入门教程
Sep 14 Javascript
react脚手架如何配置less和ant按需加载的方法步骤
Nov 28 Javascript
详解vue项目接入微信JSSDK的坑
Dec 14 Javascript
使用jQuery如何写一个含验证码的登录界面
May 13 jQuery
微信小程序实现下滑到底部自动翻页功能
Mar 07 Javascript
Vue CLI4 Vue.config.js标准配置(最全注释)
Jun 05 Javascript
javascript实现随机抽奖功能
Dec 30 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 session 错误
2009/05/21 PHP
PHP使用Alexa API获取网站的Alexa排名例子
2014/06/12 PHP
PHP数组编码gbk与utf8互相转换的两种方法
2016/09/01 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
关于JavaScript对象的动态选择及遍历对象
2014/03/10 Javascript
JS实现让访问者自助选择网页文字颜色的方法
2015/02/24 Javascript
jQuery实现html元素拖拽
2015/07/21 Javascript
第一篇初识bootstrap
2016/06/21 Javascript
canvas实现环形进度条效果
2017/03/23 Javascript
jQuery实现的页面弹幕效果【测试可用】
2018/08/17 jQuery
详解如何在vue项目中使用eslint+prettier格式化代码
2018/11/10 Javascript
three.js搭建室内场景教程
2018/12/30 Javascript
vue生命周期的探索
2019/04/03 Javascript
微信小程序 腾讯地图显示偏差问题解决
2019/07/27 Javascript
vue实现全匹配搜索列表内容
2019/09/26 Javascript
bootstrapValidator表单校验、更改状态、新增、移除校验字段的实例代码
2020/05/19 Javascript
跟老齐学Python之深入变量和引用对象
2014/09/24 Python
用Python脚本来删除指定容量以上的文件的教程
2015/05/04 Python
简单总结Python中序列与字典的相同和不同之处
2016/01/19 Python
Python日期的加减等操作的示例
2017/08/15 Python
Python实现简单遗传算法(SGA)
2018/01/29 Python
Python 安装第三方库 pip install 安装慢安装不上的解决办法
2019/06/18 Python
numpy 返回函数的上三角矩阵实例
2019/11/25 Python
python3 webp转gif格式的实现示例
2019/12/10 Python
浅谈PyQt5中异步刷新UI和Python多线程总结
2019/12/13 Python
Python turtle画图库&amp;&amp;画姓名实例
2020/01/19 Python
CSS3 :default伪类选择器使用简介
2018/03/15 HTML / CSS
HTML5 拖拽批量上传文件的示例代码
2018/03/28 HTML / CSS
美国药妆网站:EDCskincare.com(防晒、痤疮、抗衰老等)
2017/04/28 全球购物
荷兰浴室和卫浴网上商店:Badkamerxxl.nl
2020/10/06 全球购物
优秀辅导员事迹材料
2014/02/16 职场文书
党的群众路线教育实践活动个人对照检查材料(教师)
2014/11/04 职场文书
博士导师推荐信
2015/03/25 职场文书
欢迎新生标语2015
2015/07/16 职场文书
会议室管理制度范本
2015/08/06 职场文书
一文搞懂Redis中String数据类型
2022/04/03 Redis