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取消文本选定的实现代码
Nov 14 Javascript
js中数组(Array)的排序(sort)注意事项说明
Jan 24 Javascript
js网页实时倒计时精确到秒级
Feb 10 Javascript
JavaScript实现自动弹出窗口并自动关闭窗口的方法
Aug 06 Javascript
javascript作用域链(Scope Chain)用法实例解析
Nov 30 Javascript
angularjs创建弹出框实现拖动效果
Aug 25 Javascript
AngularJS基础 ng-repeat 指令简单示例
Aug 03 Javascript
jquery 实时监听输入框值变化的完美方法(必看)
Jan 26 Javascript
JavaScript实现多态和继承的封装操作示例
Aug 20 Javascript
jquery分页插件pagination使用教程
Oct 23 jQuery
js页面加载后执行的几种方式小结
Jan 30 Javascript
vue路由切换时取消之前的所有请求操作
Sep 01 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
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
2010/10/20 Javascript
JavaScript中的面向对象介绍
2012/06/30 Javascript
文本框中禁止非数字字符输入比如手机号码、邮编
2013/08/19 Javascript
js中window.open()的所有参数详细解析
2014/01/09 Javascript
关于页面嵌入swf覆盖div层的问题的解决方法
2014/02/11 Javascript
js插件YprogressBar实现漂亮的进度条效果
2015/04/20 Javascript
JS给Textarea文本框添加行号的方法
2015/08/20 Javascript
js获取元素的外链样式的简单实现方法
2016/06/06 Javascript
浅析Javascript ES6中的原生Promise
2016/08/25 Javascript
Angular 中 select指令用法详解
2016/09/29 Javascript
详解JavaScript的闭包、IIFE、apply、函数与对象
2016/12/21 Javascript
详解vue过滤器在v2.0版本用法
2017/06/01 Javascript
Node.js使用Express.Router的方法
2017/11/14 Javascript
Vue-Access-Control 前端用户权限控制解决方案
2017/12/01 Javascript
nodejs使用http模块发送get与post请求的方法示例
2018/01/08 NodeJs
基于nodejs res.end和res.send的区别
2018/05/14 NodeJs
微信小程序整合使用富文本编辑器的方法详解
2019/04/25 Javascript
js实现视图和数据双向绑定的方法分析
2020/02/05 Javascript
[01:08:57]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第二场
2014/05/24 DOTA
[47:04]LGD vs infamous Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
Django数据库表反向生成实例解析
2018/02/06 Python
Python操作Sonqube API获取检测结果并打印过程解析
2019/11/27 Python
解决pyshp UnicodeDecodeError的问题
2019/12/06 Python
详解python的super()的作用和原理
2020/10/29 Python
Autopep8的使用(python自动编排工具)
2021/03/02 Python
VSCode中autopep8无法运行问题解决方案(提示Error: Command failed,usage)
2021/03/02 Python
英国在线潜水商店:Simply Scuba
2019/03/25 全球购物
Craghoppers德国官网:户外和旅行服装
2020/02/14 全球购物
新东网科技Java笔试题
2012/07/13 面试题
军训生自我鉴定范文
2013/12/27 职场文书
体育教学随笔感言
2014/02/24 职场文书
网络编辑职责
2014/03/01 职场文书
《九寨沟》教学反思
2014/04/08 职场文书
中专毕业生的自荐书
2014/07/01 职场文书
先进党支部申报材料
2014/12/24 职场文书
毕业论文答辩开场白和答辩技巧
2015/05/27 职场文书