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 相关文章推荐
快速保存网页中所有图片的方法
Jun 23 Javascript
javascript html 静态页面传参数
Apr 10 Javascript
javascript 验证日期的函数
Mar 18 Javascript
JQuery分别取得每行最后一列和最后一行的示例代码
Aug 18 Javascript
js如何判断用户是在PC端和还是移动端访问
Apr 24 Javascript
JS实现可调整倒计时间代码分享
Aug 18 Javascript
详解JavaScript for循环中发送AJAX请求问题
Jun 23 Javascript
jsonp跨域请求详解
Jul 13 Javascript
JS+Ajax实现百度智能搜索框
Aug 04 Javascript
JS对象与JSON互转换、New Function()、 forEach()、DOM事件流等js开发基础小结
Aug 10 Javascript
react-router browserHistory刷新页面404问题解决方法
Dec 29 Javascript
Echarts动态加载多条折线图的实现代码
May 24 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.MVC的模板标签系统(二)
2006/09/05 PHP
简体中文转换为繁体中文的PHP函数
2006/10/09 PHP
利用PHP生成静态HTML文档的原理
2012/10/29 PHP
PHP小教程之实现双向链表
2014/06/12 PHP
PHP中array_map与array_column之间的关系分析
2014/08/19 PHP
11个PHPer必须要了解的编程规范
2014/09/22 PHP
php中字符集转换iconv函数使用总结
2014/10/11 PHP
PHP Try-catch 语句使用技巧
2016/02/28 PHP
jsvascript图像处理—(计算机视觉应用)图像金字塔
2013/01/15 Javascript
jQuery之日期选择器的深入解析
2013/06/19 Javascript
浅谈checkbox的一些操作(实战经验)
2013/11/20 Javascript
Jquery如何实现点击时高亮显示代码
2014/01/22 Javascript
一看就懂:jsonp详解
2015/06/01 Javascript
AngularJS控制器继承自另一控制器
2016/05/09 Javascript
Ajax分页插件Pagination从前台jQuery到后端java总结
2016/07/22 Javascript
js 获取站点应用名的简单实例
2016/08/18 Javascript
微信小程序 摇一摇抽奖简单实例实现代码
2017/01/09 Javascript
浅谈JavaScript中的属性:如何遍历属性
2017/09/14 Javascript
vue-router实现组件间的跳转(参数传递)
2017/11/07 Javascript
JavaScript实现新年倒计时效果
2018/11/17 Javascript
微信小程序使用canvas自适应屏幕画海报并保存图片功能
2019/07/25 Javascript
浅谈javascript错误处理
2019/08/11 Javascript
详解BootStrap表单验证中重置BootStrap-select验证提示不清除的坑
2019/09/17 Javascript
js+canvas实现纸牌游戏
2020/03/16 Javascript
vue中重定向redirect:‘/index‘,不显示问题、跳转出错的完美解决
2020/09/28 Javascript
[04:10]DOTA2英雄梦之声_第11期_圣堂刺客
2014/06/21 DOTA
线程和进程的区别及Python代码实例
2015/02/04 Python
python连接PostgreSQL数据库的过程详解
2019/09/18 Python
基于django 的orm中非主键自增的实现方式
2020/05/18 Python
使用opencv识别图像红色区域,并输出红色区域中心点坐标
2020/06/02 Python
销售副总经理岗位职责
2013/12/11 职场文书
大学英语演讲稿范文
2014/04/24 职场文书
环保标语大全
2014/06/12 职场文书
2014幼儿园小班工作总结
2014/11/10 职场文书
2015年第十五个全民国防教育日宣传活动方案
2015/05/06 职场文书
幼儿园小班教育随笔
2015/08/14 职场文书