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 相关文章推荐
css transform 3D幻灯片特效实现步骤解读
Mar 27 Javascript
JS去除数组重复值的五种不同方法
Sep 06 Javascript
jQuery aminate方法定位到页面具体位置
Dec 26 Javascript
如何动态的导入js文件具体该怎么实现
Jan 14 Javascript
JavaScript代码性能优化总结(推荐)
May 16 Javascript
关于两个jQuery(js)特效冲突的bug的解决办法
Sep 04 Javascript
node网页分段渲染详解
Sep 05 Javascript
H5实现中奖记录逐行滚动切换效果
Mar 13 Javascript
JavaScript方法_动力节点Java学院整理
Jun 28 Javascript
node下使用UglifyJS压缩合并JS文件的方法
Mar 07 Javascript
vue.js中使用echarts实现数据动态刷新功能
Apr 16 Javascript
H5+css3+js搭建带验证码的登录页面
Oct 11 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
一个典型的PHP分页实例代码分享
2011/07/28 PHP
克隆一个新项目的快捷方式
2013/04/10 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
2017/08/11 PHP
jquery 表单取值常用代码
2009/12/22 Javascript
js下通过getList函数实现分页效果的代码
2010/09/17 Javascript
javaScript 利用闭包模拟对象的私有属性
2011/12/29 Javascript
Javascript 按位左移运算符使用介绍(
2014/02/04 Javascript
Node.js文件操作详解
2014/08/16 Javascript
详解JavaScript编程中的数组结构
2015/10/24 Javascript
Javascript数组循环遍历之forEach详解
2016/11/07 Javascript
解决给dom元素绑定click等事件无效问题的方法
2017/02/17 Javascript
Bootstrap Scrollspy源码学习
2017/03/02 Javascript
jQuery实现的动态文字变化输出效果示例【附演示与demo源码下载】
2017/03/24 jQuery
JS按钮闪烁功能的实现代码
2017/07/21 Javascript
利用es6 new.target来对模拟抽象类的方法
2019/05/10 Javascript
vue柱状进度条图像的完美实现方案
2019/08/26 Javascript
js实现点击选项置顶动画效果
2020/08/25 Javascript
Python登录并获取CSDN博客所有文章列表代码实例
2017/12/28 Python
Python实现PS图像调整之对比度调整功能示例
2018/01/26 Python
Ubuntu+python将nii图像保存成png格式
2019/07/18 Python
Win10系统下安装labelme及json文件批量转化方法
2019/07/30 Python
使用pip安装python库的多种方式
2019/07/31 Python
python3 实现的对象与json相互转换操作示例
2019/08/17 Python
使用Python项目生成所有依赖包的清单方式
2020/07/13 Python
使用CSS3的rem属性制作响应式页面布局的要点解析
2016/05/24 HTML / CSS
商场经理竞聘演讲稿
2014/01/01 职场文书
标准自荐信范文
2014/01/29 职场文书
人民教师的自我评价分享
2014/02/21 职场文书
护理专业学生职业生涯规划范文
2014/03/11 职场文书
煤矿安全承诺书
2014/05/22 职场文书
森林病虫害防治方案
2014/06/02 职场文书
致男子1500米运动员的广播稿
2019/11/08 职场文书
解决pytorch 损失函数中输入输出不匹配的问题
2021/06/05 Python
搞笑Gif:这么白这么长的腿像极了一楼的女朋友
2022/03/21 杂记
使用python将HTML转换为PDF pdfkit包(wkhtmltopdf) 的使用方法
2022/04/21 Python
Redis入门基础常用操作命令整理
2022/06/01 Redis