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 相关文章推荐
判断及设置浏览器全屏模式
Apr 20 Javascript
JavaScript使用setInterval()函数实现简单轮询操作的方法
Feb 02 Javascript
JavaScript判断图片是否已经加载完毕的方法汇总
Feb 05 Javascript
jQuery内容折叠效果插件用法实例分析(附demo源码)
Apr 28 Javascript
常用的js验证和数据处理总结
Aug 02 Javascript
VUE axios上传图片到七牛的实例代码
Jul 28 Javascript
实例详解vue.js浅度监听和深度监听及watch用法
Aug 16 Javascript
微信小程序实现判断是分享到群还是个人功能示例
May 03 Javascript
JavaScript中break、continue和return的用法区别实例分析
Mar 02 Javascript
Vue 防止短时间内连续点击后多次触发请求的操作
Nov 11 Javascript
vue组件的路由高亮问题解决方法
May 11 Vue.js
Vue自定义铃声提示音组件的实现
Jan 22 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
基于flush()不能按顺序输出时的解决办法
2013/06/29 PHP
php的数组与字符串的转换函数整理汇总
2013/07/18 PHP
PHP中把stdClass Object转array的几个方法
2014/05/08 PHP
Yii分页用法实例详解
2014/12/04 PHP
php中heredoc与nowdoc介绍
2014/12/25 PHP
PHP+MySQL之Insert Into数据插入用法分析
2015/09/27 PHP
Laravel框架分页实现方法分析
2018/06/12 PHP
php无限级分类实现评论及回复功能
2019/02/18 PHP
权威JavaScript 中的内存泄露模式
2007/08/13 Javascript
ExtJS 2.0实用简明教程 之Border区域布局
2009/04/29 Javascript
基于jquery的无刷新分页技术
2011/06/11 Javascript
用innerhtml提高页面打开速度的方法
2013/08/02 Javascript
详解JavaScript对W3C DOM模版的支持情况
2015/06/16 Javascript
Jqgrid之强大的表格插件应用
2015/12/02 Javascript
简单介绍jsonp 使用小结
2016/01/27 Javascript
JS+CSS3制作炫酷的弹窗效果
2016/11/08 Javascript
AngularJS 获取ng-repeat动态生成的ng-model值实例详解
2016/11/29 Javascript
原生js实现回复评论功能
2017/01/18 Javascript
微信小程序 template模板详解及实例
2017/02/21 Javascript
node.js 用socket实现聊天的示例代码
2017/10/17 Javascript
Thinkjs3新手入门之添加一个新的页面
2017/12/06 Javascript
小程序异步问题之多个网络请求依次执行并依次收集请求结果
2019/05/05 Javascript
如何用JS模拟实现数组的map方法
2020/07/30 Javascript
python计算最小优先级队列代码分享
2013/12/18 Python
python中bisect模块用法实例
2014/09/25 Python
Python实现代码统计工具(终极篇)
2016/07/04 Python
python 实现将字典dict、列表list中的中文正常显示方法
2018/07/06 Python
Python3+OpenCV2实现图像的几何变换(平移、镜像、缩放、旋转、仿射)
2019/05/13 Python
Pytorch在dataloader类中设置shuffle的随机数种子方式
2020/01/14 Python
HTML5 canvas基本绘图之绘制线段
2016/06/27 HTML / CSS
求职信标题怎么写
2014/05/26 职场文书
中考标语大全
2014/06/05 职场文书
企业文化标语口号
2014/06/09 职场文书
党的群众路线教育实践活动总结报告
2014/07/03 职场文书
2014年创先争优工作总结
2014/12/11 职场文书
MyBatis XPathParser解析器使用范例详解
2022/07/15 Java/Android