JavaScript实现列表分页功能特效


Posted in Javascript onMay 15, 2015

最近写了一个js分页的方法,尽管已经有现成的可以用,但还是想自己写写,搞搞清楚。最终实现的效果是:上一页、第一页、…(上n个页码)、n个页码、…(下n个页码)、最后一页、下一页。n可以是奇数也可以是偶数,一般都喜欢取奇数,星石调用的时候传入的参数是5。写的时候,主要注意了以下几个地方:

 页码等于1时,只显示上一页、第一页、最后一页,且都没有跳转;
 页码小于等于2时,不需要中间的n个页码;
 页码小于等于n时,显示所有页码,不显示2个“…”;
 2个“…”换页时,换n个页码,如果接近最前面或最后面几页了,则显示最前面或最后面n个页码。

下面贴出代码,供大家探讨:

//总页数,当前页数,跳转地址,第一页和最后一页之间显示的页码数量
function pageBar(tp,cp,url,pn){
    var str = ‘<ul class=”page”>';
    if(tp>1 && cp>1){
      var prev = cp-1;
      str += ‘<li><a class=”prev” title=”上一页” href=”javascript:goPage(‘+prev+‘,\”+url+‘\');”><span>上一页</span></a></li> ‘;
    }else{
      str += ‘<li><a class=”prev” title=”上一页” href=”javascript:void(0);”><span>上一页</span></a></li> ‘;
    }
    if(tp>1){
      //第一页
      if(cp==1){
        str +=‘<li class=”current”><a href=”javascript:goPage(1,\”+url+‘\');”><span>1</span></a></li> ‘;
      }else{
        str +=‘<li><a href=”javascript:goPage(1,\”+url+‘\');”><span>1</span></a></li> ‘;
      }

      if(tp>2){
        var pnh = Math.floor(pn/2);

        //循环开始页码
        var s = cp-pnh;
        if(s<=1){
          s = 2;
        }

        //循环结束页码
        var e = cp+pnh;
        if(e>=tp){
          e = tp-1;
        }

        if(s<=(1+pnh)){
          if(tp>(pn+2)){
            e = s+(pn-1);
            if(e>=tp){
              e = tp-1;
            }
          }else{
            s = 2;
          }
        }

        if(e>=(tp-pnh)){
          if(tp>(pn+2)){
            s = e-(pn-1);
            if(s<=1){
              s = 2;
            }
          }else{
            e = tp-1;
          }
        }

        if(e<s){
          e = s;
        }

        //第一页后的多页跳转
        if(s>2){
          var sp = cp-pn;
          if(sp<1){
            sp=1;
          }
          str += ‘<li><a name=”break” href=”javascript:goPage(‘+sp+‘,\”+url+‘\');”><span>…</span></a></li> ‘;
        }

        for(var i=s;i<=e;i++){
          if(i==cp){
            str += ‘<li class=”current”><a href=”javascript:goPage(‘+i+‘,\”+url+‘\');”><span>'+i+‘</span></a></li> ‘;
          }else{
            str += ‘<li><a href=”javascript:goPage(‘+i+‘,\”+url+‘\');”><span>'+i+‘</span></a></li> ‘;
          }
        }

        //最后一页前的多页跳转
        if(e < (tp-1)){
          var ep = cp+pn;
          if(ep>tp){
            ep=tp;
          }
          str += ‘<li><a name=”break” href=”javascript:goPage(‘+ep+‘,\”+url+‘\');”><span>…</span></a></li> ‘;
        }
      }

      //最后一页
      if(cp==tp){
        str +=‘<li class=”current”><a href=”javascript:goPage(‘+tp+‘,\”+url+‘\');”><span>'+tp+‘</span></a></li> ‘;
      }else{
        str +=‘<li><a href=”javascript:goPage(‘+tp+‘,\”+url+‘\');”><span>'+tp+‘</span></a></li> ‘;
      }

    }else{
      str +=‘ <li class=”current”><a href=”javascript:void(0);”><span>1</span></a></li> ‘;
    }

    if(tp>1 && cp<tp){
      var next = cp+1;
      str += ‘<li><a class=”next” title=”下一页” href=”javascript:goPage(‘+next+‘,\”+url+‘\');”><span>下一页</span></a></li>';
    }else{
      str += ‘<li><a class=”next” title=”下一页” href=”javascript:void(0);”><span>下一页</span></a></li>';
    }
    str += ‘</ul>';
    return str;
  }

  //跳转页码,跳转地址
  function goPage(cp,url){
    window.location.href = url+cp;
  }

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
JObj预览一个JS的框架
Mar 13 Javascript
jQuery对象和DOM对象使用说明
Jun 25 Javascript
js 左右悬浮对联广告代码示例
Dec 12 Javascript
使用Web Uploader实现多文件上传
Jun 08 Javascript
JS基于递归实现倒计时效果的方法
Nov 26 Javascript
从零学习node.js之mysql数据库的操作(五)
Feb 24 Javascript
Vue.js实战之组件之间的数据传递
Apr 01 Javascript
vue2利用Bus.js如何实现非父子组件通信详解
Aug 25 Javascript
浅谈Node.js 中间件模式
Jun 12 Javascript
Windows下支持自动更新的Electron应用脚手架的方法
Dec 24 Javascript
vue学习笔记之Vue中css动画原理简单示例
Feb 29 Javascript
javascript 易错知识点实例小结
Apr 25 Javascript
基于jQuery插件实现环形图标菜单旋转切换特效
May 15 #Javascript
js生成验证码并直接在前端判断
May 15 #Javascript
javascript实现表格增删改操作实例详解
May 15 #Javascript
javascript实现可全选、反选及删除表格的方法
May 15 #Javascript
javascript实现点击商品列表checkbox实时统计金额的方法
May 15 #Javascript
javascript实现Table排序的方法
May 15 #Javascript
Javascript动态创建表格及删除行列的方法
May 15 #Javascript
You might like
dedecms后台验证码总提示错误的解决方法
2007/03/21 PHP
php 伪造本地文件包含漏洞的代码
2011/11/03 PHP
浅析PHP中Collection 类的设计
2013/06/21 PHP
浅析php与数据库代码开发规范
2013/08/08 PHP
html数组字符串拼接的最快方法
2009/09/16 Javascript
Dom 是什么的详细说明
2010/10/25 Javascript
JavaScript 用Node.js写Shell脚本[译]
2012/09/20 Javascript
js修改table中Td的值(定义td的双击事件)
2013/01/10 Javascript
Jquery中使用setInterval和setTimeout的方法
2013/04/08 Javascript
javaScript 计算两个日期的天数相差(示例代码)
2013/12/27 Javascript
js处理自己不能定义二维数组的方法详解
2014/03/03 Javascript
js中自定义方法实现停留几秒sleep
2014/07/11 Javascript
javascript+canvas制作九宫格小程序
2014/12/28 Javascript
快速掌握Node.js中setTimeout和setInterval的使用方法
2016/03/21 Javascript
深入理解JavaScript中的并行处理
2016/09/22 Javascript
微信js-sdk上传与下载图片接口用法示例
2016/10/12 Javascript
解决vue无法设置滚动位置的问题
2018/10/07 Javascript
Javascript操作select控件代码实例
2020/02/14 Javascript
vue2和vue3的v-if与v-for优先级对比学习
2020/10/10 Javascript
js实现鼠标切换图片(无定时器)
2021/01/27 Javascript
[01:37]TI4西雅图DOTA2前线报道 VG拿下首胜教练357给出获胜秘诀
2014/07/10 DOTA
在Python中使用列表生成式的教程
2015/04/27 Python
python出现&quot;IndentationError: unexpected indent&quot;错误解决办法
2017/10/15 Python
Python中一行和多行import模块问题
2018/04/01 Python
canvas绘制圆角头像的实现方法
2019/01/17 HTML / CSS
SkinCeuticals官网:美国药妆品牌
2018/04/19 全球购物
Lentiamo比利时:便宜的隐形眼镜
2020/02/14 全球购物
高校教师岗位职责
2014/03/18 职场文书
5.12护士节演讲稿
2014/04/30 职场文书
伦敦奥运会的口号
2014/06/21 职场文书
租赁协议书
2015/01/27 职场文书
兴趣班停课通知
2015/04/24 职场文书
2015年公司行政后勤工作总结
2015/05/20 职场文书
mysql字符串截取函数小结
2021/04/05 MySQL
Python一些基本的图像操作和处理总结
2021/06/23 Python
Win11软件图标固定到任务栏
2022/04/19 数码科技