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 相关文章推荐
google地图的路线实现代码
Aug 20 Javascript
分享有关jQuery中animate、slide、fade等动画的连续触发、滞后反复执行的bug
Jan 10 Javascript
Javascript字符串拼接小技巧(推荐)
Jun 02 Javascript
微信JS-SDK坐标位置如何转换为百度地图坐标
Jul 04 Javascript
js判断所有表单项不为空则提交表单的实现方法
Sep 09 Javascript
Vue内容分发slot(全面解析)
Aug 19 Javascript
webstrom Debug 调试vue项目的方法步骤
Jul 17 Javascript
用js简单提供增删改查接口
May 12 Javascript
Vue实现商品分类菜单数量提示功能
Jul 26 Javascript
vue 返回上一页,页面样式错乱的解决
Nov 14 Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
Mar 05 Javascript
vue操作dom元素的3种方法示例
Sep 20 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实现的博客欢迎提示功能(很特别哦)
2014/06/05 PHP
双冒号 ::在PHP中的使用情况
2015/11/05 PHP
php的常量和变量实例详解
2017/06/27 PHP
浅谈PHP中new self()和new static()的区别
2017/08/11 PHP
JQuery 实现的页面滚动时浮动窗口控件
2009/07/10 Javascript
js 动态选中下拉框
2009/11/26 Javascript
初学js 新节点的创建 删除 的步骤
2011/07/04 Javascript
浅析js中取绝对值的2种方法
2013/07/09 Javascript
JS生成随机字符串的多种方法
2014/06/10 Javascript
进阶之初探nodeJS
2017/01/24 NodeJs
深入理解Vue-cli搭建项目后的目录结构探秘
2017/07/13 Javascript
详解Vue-cli代理解决跨域问题
2017/09/27 Javascript
Vue + Vue-router 同名路由切换数据不更新的方法
2017/11/20 Javascript
JavaScript中的各种宽高属性的实现
2020/05/08 Javascript
简单介绍Python中的len()函数的使用
2015/04/07 Python
python读取LMDB中图像的方法
2018/07/02 Python
numpy 对矩阵中Nan的处理:采用平均值的方法
2018/10/30 Python
python实现淘宝秒杀脚本
2020/06/23 Python
用Cython加速Python到“起飞”(推荐)
2019/08/01 Python
一行Python代码制作动态二维码的实现
2019/09/09 Python
Canvas 文本转粒子效果的实现代码
2019/02/14 HTML / CSS
Boden澳大利亚官网:英国在线服装公司
2018/08/05 全球购物
俄罗斯化妆品和香水网上商店:Iledebeaute
2019/01/03 全球购物
日本最大美瞳直送网:Morecontact(中文)
2019/04/03 全球购物
Mountain Warehouse波兰官方网站:英国户外品牌
2019/08/29 全球购物
SNIDEL官网:日本VIVI杂志人气少女第一品牌
2020/03/12 全球购物
应届毕业生就业自荐信
2013/10/26 职场文书
商务日语毕业生自荐信
2013/11/23 职场文书
建筑经济管理专业求职信分享
2014/01/06 职场文书
精彩广告词大全
2014/03/19 职场文书
大学生励志演讲稿
2014/04/25 职场文书
还款承诺书范文
2014/05/20 职场文书
员工趣味活动方案
2014/08/27 职场文书
社团个人总结范文
2015/03/05 职场文书
MySQL不使用order by实现排名的三种思路总结
2021/06/02 MySQL
Windows下redis下载、redis安装及使用教程
2021/06/02 Redis