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 相关文章推荐
JavaScript Event事件学习第一章 Event介绍
Feb 07 Javascript
Javascript创建Silverlight Plugin以及自定义nonSilverlight和lowSilverlight样式
Jun 28 Javascript
jquery获取下拉列表的值为null的解决方法
Mar 18 Javascript
javascript将相对路径转绝对路径示例
Mar 14 Javascript
JavaScript动态修改弹出窗口大小的方法
Apr 06 Javascript
JavaScript中使用concat()方法拼接字符串的教程
Jun 06 Javascript
深入解析JavaScript中的数字对象与字符串对象
Oct 21 Javascript
d3.js实现简单的网络拓扑图实例代码
Nov 06 Javascript
深入理解vue.js中$watch的oldvalue与newValue
Aug 07 Javascript
微信小程序点击图片实现长按预览、保存、识别带参数二维码、转发等功能
Jul 20 Javascript
JS回调函数深入理解
Oct 16 Javascript
Javascript地址引用代码实例解析
Feb 25 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文件中bom的PHP代码
2012/03/13 PHP
PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】
2017/10/07 PHP
详解PHP版本兼容之openssl调用参数
2018/07/25 PHP
Jquery 学习笔记(一)
2009/10/13 Javascript
自己动手制作jquery插件之自动添加删除行的实现
2011/10/13 Javascript
dreamweaver 8实现Jquery自动提示
2014/12/04 Javascript
详细分析JavaScript函数定义
2015/07/16 Javascript
jQuery实现的简单拖拽功能示例
2016/09/13 Javascript
微信小程序 绘图之饼图实现
2016/10/24 Javascript
Ionic+AngularJS实现登录和注册带验证功能
2017/02/09 Javascript
使用JavaScript实现node.js中的path.join方法
2018/08/12 Javascript
vue中使用gojs/jointjs的示例代码
2018/08/24 Javascript
element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)
2019/01/15 Javascript
微信小程序实现滑动操作代码
2020/04/23 Javascript
JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法
2021/01/29 Javascript
python中文编码问题小结
2014/09/28 Python
python实现将html表格转换成CSV文件的方法
2015/06/28 Python
python 的列表遍历删除实现代码
2020/04/12 Python
python用plt画图时,cmp设置方法
2018/12/13 Python
Win10环境python3.7安装dlib模块趟过的坑
2019/08/01 Python
python 实现多线程下载m3u8格式视频并使用fmmpeg合并
2019/11/15 Python
pytorch 准备、训练和测试自己的图片数据的方法
2020/01/10 Python
Python Tornado批量上传图片并显示功能
2020/03/26 Python
python实现数字炸弹游戏
2020/07/17 Python
Alexandre Birman美国官网:亚历山大·伯曼
2019/10/30 全球购物
下列程序在32位linux或unix中的结果是什么
2014/03/25 面试题
车间主管岗位职责
2013/11/14 职场文书
税务会计岗位职责
2014/02/18 职场文书
质检部经理岗位职责
2014/02/19 职场文书
毕业生简历自我评价范文
2014/04/09 职场文书
大学班级文化建设方案
2014/05/06 职场文书
老龄工作先进事迹
2014/08/15 职场文书
城市规划应届生推荐信
2014/09/08 职场文书
公司车辆管理制度
2015/08/04 职场文书
个人道歉信大全
2019/04/11 职场文书
MySQL CHAR和VARCHAR该如何选择
2021/05/31 MySQL