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为表单动态添加节点内容的方法
Feb 10 Javascript
jQuery实现在textarea指定位置插入字符或表情的方法
Mar 11 Javascript
《JavaScript函数式编程》读后感
Aug 07 Javascript
浅谈js键盘事件全面控制
Dec 01 Javascript
用js制作淘宝放大镜效果
Oct 28 Javascript
Javascript前端经典的面试题及答案
Mar 14 Javascript
js实现股票实时刷新数据案例
May 14 Javascript
微信小程序实现弹出层效果
May 26 Javascript
微信小程序新手教程之页面打开数量限制
Mar 03 Javascript
使用React手写一个对话框或模态框的方法示例
Apr 25 Javascript
Vue根据条件添加click事件的方式
Nov 09 Javascript
JavaScript 面向对象程序设计详解【类的创建、实例对象、构造函数、原型等】
May 12 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
smarty实例教程
2006/11/19 PHP
Linux下 php5 MySQL5 Apache2 phpMyAdmin ZendOptimizer安装与配置[图文]
2008/11/18 PHP
php按单词截取字符串的方法
2015/04/07 PHP
php使用cookie实现记住用户名和密码实现代码
2015/04/27 PHP
学习php设计模式 php实现备忘录模式(Memento)
2015/12/09 PHP
php简单压缩css样式示例
2016/09/22 PHP
php使用环形链表解决约瑟夫问题完整示例
2018/08/07 PHP
Yii2语言国际化自动配置详解
2018/08/22 PHP
清华大学出版的事半功倍系列 javascript全部源代码
2007/05/04 Javascript
jQuery插件 tabBox实现代码
2010/02/09 Javascript
ExtJs 表单提交登陆实现代码
2010/08/19 Javascript
EXT窗口Window及对话框MessageBox
2011/01/27 Javascript
node.js使用require()函数加载模块
2014/11/26 Javascript
node.js中的http.request.end方法使用说明
2014/12/10 Javascript
完美兼容IE,chrome,ff的设为首页、加入收藏及保存到桌面js代码
2014/12/17 Javascript
仿百度换肤功能的简单实例代码
2016/07/11 Javascript
jQuery 全选 全部选 反选 实现代码
2016/08/17 Javascript
概述jQuery中的ajax方法
2016/12/16 Javascript
Angular路由简单学习
2016/12/26 Javascript
vue移动端监听滚动条高度的实现方法
2018/09/03 Javascript
用Electron写个带界面的nodejs爬虫的实现方法
2019/01/29 NodeJs
微信小程序获取复选框全选反选选中的值(实例代码)
2019/12/17 Javascript
基于JQuery和DWR实现异步数据传递
2020/10/16 jQuery
[35:55]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.11
2020/12/13 DOTA
Python 逐行分割大txt文件的方法
2017/10/10 Python
使用python读取csv文件快速插入数据库的实例
2018/06/21 Python
Window 64位下python3.6.2环境搭建图文教程
2018/09/19 Python
Python设计模式之享元模式原理与用法实例分析
2019/01/11 Python
Python eval函数介绍及用法
2020/11/09 Python
日本食品网上商店:JaponShop.com
2017/11/28 全球购物
介绍Ibatis的核心类
2013/11/18 面试题
数控专业个人求职信范例
2013/11/29 职场文书
教育课题研究自我鉴定范文
2013/12/28 职场文书
教师求职自荐信
2015/03/26 职场文书
JavaScript中的宏任务和微任务详情
2021/11/27 Javascript
win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境的方法
2022/06/25 Servers