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 相关文章推荐
读jQuery之十二 删除事件核心方法
Jul 31 Javascript
javascript中parseInt()函数的定义和用法分析
Dec 20 Javascript
javascript中sort() 方法使用详解
Aug 30 Javascript
跟我学习javascript的垃圾回收机制与内存管理
Nov 23 Javascript
node+experss实现爬取电影天堂爬虫
Nov 20 Javascript
Angular-Touch库用法示例
Dec 22 Javascript
JavaScript实现前端实时搜索功能
Mar 26 Javascript
javascript如何用递归写一个简单的树形结构示例
Sep 06 Javascript
mac中利用NVM管理不同node版本的方法详解
Nov 08 Javascript
vue实现tab切换外加样式切换方法
Mar 16 Javascript
Vue2.x中利用@font-size引入字体图标报错的解决方法
Sep 28 Javascript
angular将html代码输出为内容的实例
Sep 30 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按行读取、处理较大CSV文件的代码实例
2014/04/09 PHP
PHP实现的sqlite数据库连接类
2014/12/12 PHP
PHP简单判断字符串是否包含另一个字符串的方法
2016/03/25 PHP
javascript在一段文字中的光标处插入其他文字
2007/08/26 Javascript
jquery ui dialog ie8出现滚动条的解决方法
2010/12/06 Javascript
IE6-8中Date不支持toISOString的修复方法
2014/05/04 Javascript
java、javascript实现附件下载示例
2014/08/14 Javascript
js验证上传图片的方法
2015/05/12 Javascript
解决angular的$http.post()提交数据时后台接收不到参数值问题的方法
2015/12/10 Javascript
Javascript OOP之面向对象
2016/07/31 Javascript
JS前端开发判断是否是手机端并跳转操作(小结)
2017/02/05 Javascript
详解基于node的前端项目编译时内存溢出问题
2017/08/01 Javascript
Nodejs 复制文件/文件夹的方法
2017/08/24 NodeJs
node+express+ejs使用模版引擎做的一个示例demo
2017/09/18 Javascript
AngularJS中table表格基本操作示例
2017/10/10 Javascript
nodejs实现一个word文档解析器思路详解
2018/08/14 NodeJs
Vue代码整洁之去重方法整理
2019/08/06 Javascript
详解Vue的ref特性的使用
2020/01/24 Javascript
javascript canvas实现简易时钟例子
2020/09/05 Javascript
[02:34]DOTA2亚洲邀请赛 BG战队出场宣传片
2015/03/09 DOTA
Cpy和Python的效率对比
2015/03/20 Python
Python基于回溯法子集树模板解决全排列问题示例
2017/09/07 Python
python GUI实例学习
2017/11/21 Python
python中for用来遍历range函数的方法
2018/06/08 Python
python调用百度地图WEB服务API获取地点对应坐标值
2019/01/16 Python
python的内存管理和垃圾回收机制详解
2019/05/18 Python
python Manager 之dict KeyError问题的解决
2019/12/21 Python
Keras实现DenseNet结构操作
2020/07/06 Python
IRO美国官网:法国服装品牌
2018/03/06 全球购物
Parfumdreams芬兰:购买香水和化妆品
2021/02/13 全球购物
教师自我鉴定范文
2013/11/10 职场文书
网络营销策划方案
2014/06/04 职场文书
中学学校门卫岗位职责
2014/08/15 职场文书
委托书怎样写
2014/08/30 职场文书
写给医生的感谢信
2015/01/22 职场文书
一次SQL如何查重及去重的实战记录
2022/03/13 MySQL