Javascript实现的分页函数


Posted in Javascript onFebruary 07, 2007

/**
 * 分页类构造
 * 参数 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 相关文章推荐
学习YUI.Ext 第三天
Mar 10 Javascript
web的各种前端打印方法之jquery打印插件PrintArea实现网页打印
Jan 09 Javascript
使用闭包对setTimeout进行简单封装避免出错
Jul 10 Javascript
使用JS读秒使用示例
Sep 21 Javascript
JavaScript的Date()方法使用详解
Jun 09 Javascript
jquery实现带缩略图的全屏图片画廊效果实例
Jun 25 Javascript
在js代码拼接dom对象到页面上去的模板总结(必看)
Feb 14 Javascript
VueJs组件prop验证简单介绍
Sep 12 Javascript
Vuejs开发环境搭建及热更新【推荐】
Sep 07 Javascript
ionic4+angular7+cordova上传图片功能的实例代码
Jun 19 Javascript
如何在JavaScript中谨慎使用代码注释
Jun 21 Javascript
如何阻止移动端浏览器点击图片浏览
Aug 29 Javascript
[转]JS宝典学习笔记
Feb 07 #Javascript
HTML页面如何象ASP一样接受参数
Feb 07 #Javascript
DOM相关内容速查手册
Feb 07 #Javascript
索趣科技的答案
Feb 07 #Javascript
JS模拟多线程
Feb 07 #Javascript
使用prototype.js进行异步操作
Feb 07 #Javascript
最新优化收藏到网摘代码(digg,diigo)
Feb 07 #Javascript
You might like
PHP使用strtotime计算两个给定日期之间天数的方法
2015/03/18 PHP
php 如何禁用eval() 函数实例详解
2016/12/01 PHP
PHP基于session.upload_progress 实现文件上传进度显示功能详解
2019/08/09 PHP
javascript(jquery)利用函数修改全局变量的代码
2009/11/02 Javascript
js 调用父窗口的具体实现代码
2013/07/15 Javascript
jquery中trigger()无法触发hover事件的解决方法
2015/05/07 Javascript
ThinkJS中如何使用MongoDB的CURD操作
2016/12/13 Javascript
详解js的事件代理(委托)
2016/12/22 Javascript
EasyUI创建人员树的实例代码
2017/09/15 Javascript
React学习之事件绑定的几种方法对比
2017/09/24 Javascript
jQuery实现鼠标响应式透明度渐变动画效果示例
2018/02/13 jQuery
小程序组件之仿微信通讯录的实现代码
2018/09/12 Javascript
JavaScript数组排序的六种常见算法总结
2020/08/18 Javascript
Vue全局使用less样式,组件使用全局样式文件中定义的变量操作
2020/10/21 Javascript
[17:45]DOTA2 HEROES教学视频教你分分钟做大人-军团指挥官
2014/06/11 DOTA
[00:32]2018DOTA2亚洲邀请赛出场——LGD
2018/04/04 DOTA
python调用shell的方法
2013/11/20 Python
Python2中文处理纪要的实现方法
2018/03/10 Python
pandas object格式转float64格式的方法
2018/04/10 Python
关于Tensorflow中的tf.train.batch函数的使用
2018/04/24 Python
python 获取当天每个准点时间戳的实例
2018/05/22 Python
python实现windows下文件备份脚本
2018/05/27 Python
flask框架中勾子函数的使用详解
2018/08/01 Python
浅谈pycharm的xmx和xms设置方法
2018/12/03 Python
Python打包工具PyInstaller的安装与pycharm配置支持PyInstaller详细方法
2020/02/27 Python
基于HTML5 Canvas 实现弹出框效果
2017/06/05 HTML / CSS
时装界的“朋克之母”:Vivienne Westwood
2017/07/06 全球购物
Paul Smith英国官网:英国国宝级时装品牌
2019/03/21 全球购物
求职自荐信格式
2013/12/04 职场文书
幼师自我鉴定
2014/02/01 职场文书
学习朴航瑛老师爱岗敬业先进事迹思想汇报
2014/09/17 职场文书
2014村党支部书记党建工作汇报材料
2014/11/02 职场文书
巾帼建功标兵先进事迹材料
2016/02/29 职场文书
2016年小学圣诞节活动总结
2016/03/31 职场文书
python 中[0]*2与0*2的区别说明
2021/05/10 Python
php解析非标准json、非规范json的方式实例
2022/05/10 PHP