原生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 forEach通用循环遍历方法
Oct 11 Javascript
简洁Ajax函数处理(示例代码)
Nov 15 Javascript
关于jquery中全局函数each使用介绍
Dec 10 Javascript
location.href用法总结(最主要的)
Dec 27 Javascript
ext前台接收action传过来的json数据示例
Jun 17 Javascript
jQuery解决浏览器兼容性问题案例分析
Apr 15 Javascript
Jquery循环截取字符串的方法(多出的字符串处理成&quot;...&quot;)
Nov 28 Javascript
jquery实现(textarea)placeholder自动换行
Dec 22 Javascript
详解vue.js数据传递以及数据分发slot
Jan 20 Javascript
微信小程序文章详情页面实现代码
Sep 10 Javascript
vue实现同一个页面可以有多个router-view的方法
Sep 20 Javascript
微信小程序实现点击页面出现文字
Sep 21 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 MySQL应用中使用XOR运算加密算法分享
2011/08/28 PHP
PHP Global变量定义当前页面的全局变量实现探讨
2013/06/05 PHP
推荐一本PHP程序猿都应该拜读的书
2014/12/31 PHP
discuz图片顺序混乱解决方案
2015/07/29 PHP
Laravel 5.1 on SAE环境开发教程【附项目demo源码】
2016/10/09 PHP
Laravel框架中自定义模板指令总结
2017/12/17 PHP
基于jquery的web页面日期格式化插件
2011/11/15 Javascript
jquery实现表单验证并阻止非法提交
2015/07/09 Javascript
js实现选中复选框文字变色的方法
2015/08/14 Javascript
jQuery左侧大图右侧小图焦点图幻灯切换代码分享
2015/08/19 Javascript
Canvas实现动态的雪花效果
2017/02/13 Javascript
ES6下React组件的写法示例代码
2017/05/04 Javascript
微信小程序开发之好友列表字母列表跳转对应位置
2017/09/26 Javascript
JavaScript引用类型RegExp基本用法详解
2018/08/09 Javascript
vue 内置过滤器的使用总结(附加自定义过滤器)
2018/12/11 Javascript
js实现京东秒杀倒计时功能
2019/01/21 Javascript
js控制随机数生成概率代码实例
2019/03/21 Javascript
Vue起步(无cli)的啊教程详解
2019/04/11 Javascript
使用Vant完成通知栏Notify的提示操作
2020/11/11 Javascript
在Python的Django框架中simple-todo工具的简单使用
2015/05/30 Python
python实现用户登陆邮件通知的方法
2015/07/09 Python
python中的闭包函数
2018/02/09 Python
解决Tensorflow安装成功,但在导入时报错的问题
2018/06/13 Python
python中从str中提取元素到list以及将list转换为str的方法
2018/06/26 Python
python 调用钉钉机器人的方法
2019/02/20 Python
Django异步任务线程池实现原理
2019/12/17 Python
tensorflow模型的save与restore,及checkpoint中读取变量方式
2020/05/26 Python
浅谈keras中的keras.utils.to_categorical用法
2020/07/02 Python
详解解决jupyter不能使用pytorch的问题
2021/02/18 Python
GafasWorld西班牙:购买太阳镜、眼镜和隐形眼镜
2019/09/08 全球购物
介绍下Lucene建立索引的过程
2016/03/02 面试题
大学生职业生涯规划书范文
2014/01/14 职场文书
小学生竞选班长演讲稿
2014/04/24 职场文书
上海世博会志愿者口号
2014/06/17 职场文书
报考公务员诚信承诺书
2014/08/29 职场文书
MySQL 慢查询日志深入理解
2021/04/22 MySQL