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 相关文章推荐
由JavaScript技术实现的web小游戏(不含网游)
Jun 12 Javascript
Javascript的一种模块模式
Sep 08 Javascript
javascript学习笔记(十七) 检测浏览器插件代码
Jun 20 Javascript
给超链接添加特效鼠标移动展示提示信息且随鼠标移动
Oct 17 Javascript
点击页面其它地方隐藏该div的两种思路
Nov 18 Javascript
Javascript中的getUTCHours()方法使用详解
Jun 10 Javascript
深入浅析JavaScript中的Function类型
Jul 09 Javascript
JavaScript中return用法示例
Nov 29 Javascript
js基于myFocus实现轮播图效果
Feb 14 Javascript
Vue实现自定义下拉菜单功能
Jul 16 Javascript
vue中render函数的使用详解
Oct 12 Javascript
vue学习笔记之slot插槽基本用法实例分析
Feb 01 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
可快速识别放射性物质-国外大神教你diy一个开放式辐射探测器
2020/03/12 无线电
改造一台复古桌面收音机
2021/03/02 无线电
PHP无法访问远程mysql的问题分析及解决
2013/05/16 PHP
图片上传即时显示缩略图的js代码
2009/05/27 Javascript
web基于浏览器的本地存储方法应用
2012/11/27 Javascript
AngularJS内置指令
2015/02/04 Javascript
jquery插件unobtrusive实现片段式加载
2015/06/15 Javascript
jQuery鼠标经过方形图片切换成圆边效果代码分享
2015/08/20 Javascript
js实现随屏幕滚动的带缓冲效果的右下角广告代码
2015/09/04 Javascript
实用jquery操作表单元素的简单代码
2016/07/04 Javascript
node.js中module.exports与exports用法上的区别
2016/09/02 Javascript
js实现StringBuffer的简单实例
2016/09/02 Javascript
jquery实现input框获取焦点的简单实例
2017/01/26 Javascript
bootstrap timepicker在angular中取值并转化为时间戳
2017/06/13 Javascript
微信小程序 scroll-view实现锚点滑动的示例
2017/12/06 Javascript
vue.js实现的幻灯片功能示例
2019/01/18 Javascript
Vue的v-model的几种修饰符.lazy,.number和.trim的用法说明
2020/08/05 Javascript
Python中的连接符(+、+=)示例详解
2017/01/13 Python
python同时遍历数组的索引和值的实例
2018/11/15 Python
PyCharm Anaconda配置PyQt5开发环境及创建项目的教程详解
2020/03/24 Python
python实现爱奇艺登陆密码RSA加密的方法示例详解
2020/05/27 Python
CSS3系列教程:背景图片(背景大小和多背景图) 应用说明
2012/12/19 HTML / CSS
香港最大的洋酒零售连锁店:屈臣氏酒窖(Watson’s Wine)
2018/12/10 全球购物
Cinque网上商店:德国服装品牌
2019/03/17 全球购物
金属材料工程毕业生个人的自我评价
2013/11/28 职场文书
入党积极分子介绍信
2014/01/17 职场文书
单位消防安全责任书
2014/07/23 职场文书
财务部岗位职责
2015/02/03 职场文书
创先争优个人总结
2015/03/04 职场文书
初中班主任心得体会
2016/01/07 职场文书
2019年度政务公开考核工作总结模板
2019/11/11 职场文书
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
2021/04/06 Python
MySQL 如何分析查询性能
2021/05/12 MySQL
python关于集合的知识案例详解
2021/05/30 Python
CSS 左边固定宽右边自适应的6种方法
2022/05/15 HTML / CSS
Android移动应用开发指南之六种布局详解
2022/09/23 Java/Android