原生javascript实现的分页插件pagenav


Posted in Javascript onAugust 28, 2014

这一款是用原生javascript实现的分页插件pagenav,页码显示jquery插件,只需要存在#pageNav,则会在其中显示页码,调用时可根据需要先重写go方法.(已去除jquery依赖)。。。。

插件代码如下:

/*
 **************************
 author:Keel (keel.sike@gmail.com)
 **************************

 页码显示jquery插件,只需要存在#pageNav,则会在其中显示页码.
 调用时可根据需要先重写go方法.(已去除jquery依赖)

 **************************
 示例(注意:页面中放置id为pageNav的html对象):

 //转到页码时触发的自定义方法,p为当前页码,pn为总页数
 pageNav.fn = function(p,pn){
 alert(p+","+pn);
 };
 //初始跳到第3页,共33页
 pageNav.go(3,33);

 */
var pageNav = pageNav || {};
pageNav.fn = null;
//p为当前页码,pn为总页数
pageNav.nav = function(p, pn) {
  //只有一页,直接显示1
  if (pn <= 1) {
    this.p = 1;
    this.pn = 1;
    return this.pHtml2(1);
  }
  if (pn < p) {
    p = pn;
  };
  var re = "";
  //第一页
  if (p <= 1) {
    p = 1;
  } else {
    //非第一页
    re += this.pHtml(p - 1, pn, "上一页");
    //总是显示第一页页码
    re += this.pHtml(1, pn, "1");
  }
  //校正页码
  this.p = p;
  this.pn = pn;

  //开始页码
  var start = 2;
  var end = (pn < 9) ? pn: 9;
  //是否显示前置省略号,即大于10的开始页码
  if (p >= 7) {
    re += "...";
    start = p - 4;
    var e = p + 4;
    end = (pn < e) ? pn: e;
  }
  for (var i = start; i < p; i++) {
    re += this.pHtml(i, pn);
  };
  re += this.pHtml2(p);
  for (var i = p + 1; i <= end; i++) {
    re += this.pHtml(i, pn);
  };
  if (end < pn) {
    re += "...";
    //显示最后一页页码,如不需要则去掉下面这一句
    re += this.pHtml(pn, pn);
  };
  if (p < pn) {
    re += this.pHtml(p + 1, pn, "下一页");
  };
  return re;
};
//显示非当前页
pageNav.pHtml = function(pageNo, pn, showPageNo) {
  showPageNo = showPageNo || pageNo;
  var H = " <a href='javascript:pageNav.go(" + pageNo + "," + pn + ");' class='pageNum'>" + showPageNo + "</a> ";
  return H;

};
//显示当前页
pageNav.pHtml2 = function(pageNo) {
  var H = " <span class='cPageNum'>" + pageNo + "</span> ";
  return H;
};
//输出页码,可根据需要重写此方法
pageNav.go = function(p, pn) {
  //$("#pageNav").html(this.nav(p,pn)); //如果使用jQuery可用此句
  document.getElementById("pageNav").innerHTML = this.nav(p, pn);
  if (this.fn != null) {
    this.fn(this.p, this.pn);
  };
};

效果如下:

原生javascript实现的分页插件pagenav

演示地址:http://demo.3water.com/js/2014/pagenav/  有需要的朋友自己扒代码吧,很简单,我就不提供直接下载了

Javascript 相关文章推荐
jquery ajax同步异步的执行最终解决方案
Apr 26 Javascript
jquery可见性过滤选择器使用示例
Jun 24 Javascript
jQuery操作input值的各种方法总结
Nov 21 Javascript
jquery通过ajax加载一段文本内容的方法
Jan 15 Javascript
JS实现批量上传文件并显示进度功能
Jun 27 Javascript
vue 自定义组件 v-model双向绑定、 父子组件同步通信的多种写法
Nov 27 Javascript
详解vue-cli项目中的proxyTable跨域问题小结
Feb 09 Javascript
vue二级菜单导航点击选中事件的方法
Sep 12 Javascript
小程序实现留言板
Nov 02 Javascript
详解在Javascript中进行面向切面编程
Apr 28 Javascript
angular6开发steps步骤条组件
Jul 04 Javascript
JS实现4位随机验证码
Oct 19 Javascript
JavaScript判断变量是对象还是数组的方法
Aug 28 #Javascript
分享一个自己动手写的jQuery分页插件
Aug 28 #Javascript
jQuery标签替换函数replaceWith()的使用例子
Aug 28 #Javascript
jQuery焦点图切换简易插件制作过程全纪录
Aug 27 #Javascript
javascript正则表达式参数/g与/i及/gi的使用指南
Aug 27 #Javascript
JavaScript数组函数unshift、shift、pop、push使用实例
Aug 27 #Javascript
JavaScript实现的in_array函数
Aug 27 #Javascript
You might like
介绍php设计模式中的工厂模式
2008/06/12 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
JavaScript匿名函数之模仿块级作用域
2015/12/12 Javascript
Angular 页面跳转时传参问题
2016/08/01 Javascript
Bootstrap CSS组件之导航(nav)
2016/12/17 Javascript
详解Vue 事件驱动和依赖追踪
2017/04/22 Javascript
Vue2.0父组件与子组件之间的事件发射与接收实例代码
2017/09/19 Javascript
jQuery实现页码跳转式动态数据分页
2017/12/31 jQuery
微信小程序实时聊天WebSocket
2018/07/05 Javascript
vue-cli脚手架打包静态资源请求出错的原因与解决
2019/06/06 Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
2020/05/23 Javascript
JavaScript仿京东轮播图效果
2021/02/25 Javascript
Python高效编程技巧
2013/01/07 Python
Python数组条件过滤filter函数使用示例
2014/07/22 Python
Python HTMLParser模块解析html获取url实例
2015/04/08 Python
python如何实现内容写在图片上
2018/03/23 Python
详解Python字典的操作
2019/03/04 Python
解决pyqt5中QToolButton无法使用的问题
2019/06/21 Python
使用Python给头像加上圣诞帽或圣诞老人小图标附源码
2019/12/25 Python
浅析Python迭代器的高级用法
2020/07/16 Python
CSS3轻松实现清新 Loading 效果的简单实例
2016/06/06 HTML / CSS
纯css3实现的动画按钮的实例教程
2014/11/17 HTML / CSS
HTML5 Web Workers之网站也能多线程的实现
2013/04/24 HTML / CSS
女装和独特珠宝:Sundance Catalog
2018/09/19 全球购物
英国的领先快速时尚零售商:In The Style
2019/03/25 全球购物
Myprotein瑞士官方网站:运动营养和健身网上商店
2019/09/25 全球购物
C#面试常见问题
2013/02/25 面试题
医学生实习自我鉴定
2013/09/27 职场文书
禁止高声喧哗的标语
2014/06/11 职场文书
模具设计与制造专业求职信
2014/07/19 职场文书
考试作弊检讨书1000字(5篇)
2014/10/19 职场文书
英文版辞职信
2015/02/28 职场文书
法人代表资格证明书
2015/06/18 职场文书
2016年小学推普宣传周活动总结
2016/04/06 职场文书
党员学习型组织心得体会
2019/06/21 职场文书
Python学习之时间包使用教程详解
2022/03/21 Python