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 预解析
Oct 25 Javascript
JS面向对象编程之对象使用分析
Aug 19 Javascript
关于include标签导致js路径找不到的问题分析及解决
Jul 09 Javascript
用jQuery实现可输入多选下拉组合框实例代码
Jan 18 Javascript
Vue组件之全局组件与局部组件的使用详解
Oct 09 Javascript
原生JS控制多个滚动条同步跟随滚动效果
Dec 22 Javascript
Vue基本使用之对象提供的属性功能
Apr 30 Javascript
vue组件命名和props命名代码详解
Sep 01 Javascript
Vue登录主页动态背景短视频制作
Sep 21 Javascript
微信小程序scroll-view的滚动条设置实现
Mar 02 Javascript
vue中v-model对select的绑定操作
Aug 31 Javascript
详解VUE中的插值( Interpolation)语法
Oct 18 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学习资料汇总与网址
2007/03/16 PHP
PHP 文章中的远程图片采集到本地的代码
2009/07/30 PHP
让PHP更快的提供文件下载的代码
2012/06/13 PHP
PHP中的命名空间相关概念浅析
2015/01/22 PHP
PHP实现长文章分页实例代码(附源码)
2016/02/03 PHP
php静态成员方法和静态的成员属性的使用方法
2017/10/26 PHP
修改jQuery.Autocomplete插件 支持中文输入法 避免TAB、ENTER键失效、导致表单提交
2009/10/11 Javascript
javascript 当前日期转化为中文的实现代码
2010/05/13 Javascript
jQuery)扩展jQuery系列之一 模拟alert,confirm(一)
2010/12/04 Javascript
JS 进度条效果实现代码整理
2011/05/21 Javascript
Javascript 检测键盘按键信息及键码值对应介绍
2013/01/03 Javascript
JS打开新窗口的2种方式
2013/04/18 Javascript
js中typeof的用法汇总
2013/12/12 Javascript
自己封装的javascript事件队列函数版
2014/06/12 Javascript
jQuery获得document和window对象宽度和高度的方法
2015/03/25 Javascript
Bootstrap每天必学之按钮
2015/11/26 Javascript
详解JavaScript UTC时间转换方法
2016/01/07 Javascript
IntersectionObserver API 详解篇
2016/12/11 Javascript
JavaScript提高加载和执行效率的方法
2017/02/03 Javascript
Angular.js自定义指令学习笔记实例
2017/02/24 Javascript
js判断文件类型大小并给出提示的实现方法
2018/01/03 Javascript
JavaScript递归函数解“汉诺塔”算法代码解析
2018/07/05 Javascript
validform表单验证的实现方法
2019/03/08 Javascript
python中的装饰器详解
2015/04/13 Python
解决python2.7 查询mysql时出现中文乱码
2016/10/09 Python
python使用Flask操作mysql实现登录功能
2018/05/14 Python
Python3 单行多行万能正则匹配方法
2019/01/07 Python
django 使用 PIL 压缩图片的例子
2019/08/16 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
2020/02/18 Python
浅谈html5 video 移动端填坑记
2018/01/15 HTML / CSS
美国婴童服装市场上的领先品牌:Carter’s
2018/02/08 全球购物
.NET面试10题
2014/02/24 面试题
数控加工专业毕业生自荐信
2013/09/27 职场文书
学校党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
学校总务处领导班子民主生活会对照检查材料思想汇报
2014/09/27 职场文书
2015年七年级班主任工作总结
2015/05/21 职场文书