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实现计算加载页面所用的时间
Apr 02 Javascript
JQuery UI的拖拽功能实现方法小结
Mar 14 Javascript
怎样在JavaScript里写一个swing把数据插入数据库
Dec 10 Javascript
JQuery入门——移除绑定事件unbind方法概述及应用
Feb 05 Javascript
JQuery实现绚丽的横向下拉菜单
Dec 19 Javascript
用js格式化金额可设置保留的小数位数
May 09 Javascript
jQuery中:header选择器用法实例
Dec 29 Javascript
jquery计算鼠标和指定元素之间距离的方法
Jun 26 Javascript
Knockout自定义绑定创建方法
Dec 26 Javascript
使用vue.js在页面内组件监听scroll事件的方法
Sep 11 Javascript
Vue中img的src是动态渲染时不显示的解决
Nov 14 Javascript
VUE递归树形实现多级列表
Jul 15 Vue.js
一些常用的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
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
2014/06/25 PHP
Linux下PHP连接Oracle数据库
2014/08/20 PHP
零基础学JavaScript最新动画教程+iso光盘下载
2008/01/22 Javascript
用js实现的模拟jquery的animate自定义动画(2.5K)
2010/07/20 Javascript
js使用for循环及if语句判断多个一样的name
2014/09/09 Javascript
node.js中的fs.chmod方法使用说明
2014/12/18 Javascript
Javascript 运动中Offset的bug解决方案
2014/12/24 Javascript
jQuery选择器源码解读(六):Sizzle选择器匹配逻辑分析
2015/03/31 Javascript
基于JQuery的$.ajax方法进行异步请求导致页面闪烁的解决办法
2016/05/10 Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
2017/01/18 Javascript
Javascript仿京东放大镜的效果
2017/03/01 Javascript
神级程序员JavaScript300行代码搞定汉字转拼音
2017/05/20 Javascript
js 获取html5的data属性实现方法
2017/07/28 Javascript
javascript计算对象长度的方法
2017/10/25 Javascript
基于casperjs和resemble.js实现一个像素对比服务详解
2018/01/10 Javascript
Node.js中的不安全跳转如何防御详解
2018/10/21 Javascript
react native 仿微信聊天室实例代码
2019/09/17 Javascript
vue 子组件和父组件传值的示例
2020/09/11 Javascript
[48:45]Ti4 循环赛第二日 NEWBEE vs EG
2014/07/11 DOTA
[04:42]2015国际邀请赛CDEC战队晋级之路
2015/08/13 DOTA
Python网络爬虫出现乱码问题的解决方法
2017/01/05 Python
Python下实现的RSA加密/解密及签名/验证功能示例
2017/07/17 Python
python实现图片文件批量重命名
2020/03/23 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
2019/10/17 Python
HTML5在a标签内放置块级元素示例代码
2013/08/23 HTML / CSS
HTML5通过navigator.mediaDevices.getUserMedia调用手机摄像头问题
2020/04/27 HTML / CSS
英国豪华真皮和布艺沙发销售网站:Darlings of Chelsea
2018/01/05 全球购物
Under Armour安德玛法国官网:美国高端运动科技品牌
2018/06/29 全球购物
Pedro官网:新加坡时尚品牌
2019/08/27 全球购物
事务机电主管工作职责
2014/02/25 职场文书
外联部演讲稿
2014/05/24 职场文书
社区志愿者培训方案
2014/06/10 职场文书
中学教师师德师风承诺书
2015/04/28 职场文书
教师节主题班会教案
2015/08/17 职场文书
JavaScript控制台的更多功能
2021/04/28 Javascript
IDEA2021.2配置docker如何将springboot项目打成镜像一键发布部署
2021/09/25 Java/Android