原生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 相关文章推荐
javascript 延迟加载技术(lazyload)简单实现
Jan 17 Javascript
JS解决url传值出现中文乱码的另类办法
Apr 08 Javascript
关于jQuery $.isNumeric vs. $.isNaN vs. isNaN
Apr 15 Javascript
JavaScript数据库TaffyDB用法实例分析
Jul 27 Javascript
jQuery使用animate创建动画用法实例
Aug 07 Javascript
jquery模拟多级复选框效果的简单实例
Jun 08 Javascript
详解从Vue.js源码看异步更新DOM策略及nextTick
Oct 11 Javascript
jQuery 禁止表单用户名、密码自动填充功能
Oct 30 jQuery
vue的mixins属性详解
Mar 14 Javascript
layui添加动态菜单与选项卡 AJAX请求的例子
Sep 25 Javascript
微信小程序后端实现授权登录
Feb 24 Javascript
Vue3中toRef与toRefs的区别
Mar 24 Vue.js
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
桌面中心(四)数据显示
2006/10/09 PHP
php实现mysql数据库备份类
2008/03/20 PHP
PHP学习之整理字符串
2011/04/17 PHP
关于PHP语言构造器介绍
2013/07/08 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
2016/01/07 PHP
PHP统计目录中文件以及目录中目录大小的方法
2016/01/09 PHP
location.href 在IE6中不跳转的解决方法与推荐使用代码
2010/07/08 Javascript
jquery判断checkbox(复选框)是否被选中的代码
2010/10/20 Javascript
php图像生成函数之间的区别分析
2012/12/06 Javascript
jQuery+PHP星级评分实现方法
2015/10/02 Javascript
EasyUI闪屏EasyUI页面加载提示(原理+代码+效果图)
2016/02/21 Javascript
Javascript类型系统之undefined和null浅析
2016/07/13 Javascript
让html元素随浏览器的大小自适应垂直居中的实现方法
2016/10/12 Javascript
nodejs个人博客开发第六步 数据分页
2017/04/12 NodeJs
Angularjs中date过滤器失效的问题及解决方法
2018/07/06 Javascript
vue 实现模糊检索并根据其他字符的首字母顺序排列
2019/09/19 Javascript
React+Redux实现简单的待办事项列表ToDoList
2019/09/29 Javascript
JS简单表单验证功能完整示例
2020/01/26 Javascript
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
python求列表交集的方法汇总
2014/11/10 Python
详解Python的Django框架中manage命令的使用与扩展
2016/04/11 Python
Python实现模拟分割大文件及多线程处理的方法
2017/10/10 Python
Python+selenium实现截图图片并保存截取的图片
2018/01/05 Python
python实现遍历文件夹修改文件后缀
2018/08/28 Python
Pyqt5自适应布局实例
2019/12/13 Python
Python StringIO及BytesIO包使用方法解析
2020/06/15 Python
可自定义箭头样式的CSS3气泡提示框
2016/03/16 HTML / CSS
浅谈html5与APP混合开发遇到的问题总结
2018/03/20 HTML / CSS
异步传递消息系统的作用
2016/05/01 面试题
汽车维修专业个人求职信范文
2014/01/01 职场文书
钳工实训报告总结
2014/11/04 职场文书
2015年团支部年度工作总结
2015/05/27 职场文书
2016党风廉政建设心得体会范文
2016/01/25 职场文书
小程序后台PHP版本部署运行 LNMP+WNMP
2021/04/01 Servers
十大最帅动漫男主 碓冰拓海上榜,第一是《灌篮高手》男主角
2022/03/18 日漫
什么是css原子化,有什么用?
2022/04/24 HTML / CSS