JS实现分页导航效果


Posted in Javascript onFebruary 19, 2020

前言

最近的项目需要添加一个分页导航的功能,没有用网上封装好的文件。通过JS自己简单实现了效果。下面和大家分享一下。

内容

下图为首次加载后的效果,默认显示5页,

JS实现分页导航效果

当点击下一页时将选中页面的页码置于中间

JS实现分页导航效果

下面让我们来看看实现的代码

第一部分是在页面显示内容的处理

function SetListPage() {
   $.ajax({
    type: "GET",
    url: "ajax/PhoneList.ashx?",
    datatype: 'json',
    success: function (data, textStatus) {
     var li_list = "";
     if (data != "") {
      var cc = jQuery.parseJSON(data);     //转换Json对象
      var pagesize = 6;        //设置每页显示数
      var pagecount = Math.ceil(cc.length / pagesize); //获取页数
      SetPageCount(pagecount);      //设置跳转页签
      for (var j = 0, l = pagecount; j < l; j++) {  //设置页面内容
       if (j == 0) {
        li_list += "<table class='phonetable' >";
       }
       else {
        li_list += "<table class='phonetable hide'>";
       }
       li_list += "<tr>";
       li_list += "<th>姓名</th>";
       li_list += "<th>手机号码</th>";
       li_list += "<th>邮箱</th>";
       li_list += "</tr> ";
       var index = j * pagesize;
       var rowcount = j * pagesize + pagesize;
       if (rowcount > cc.length) {
        rowcount = cc.length;
       }
       for (var i = index; i < rowcount; i++) {
        var Name = cc[i]['Name'];
        var PhoneNO = cc[i]['PhoneNO'];
        var Email = cc[i]['Email'];
        li_list += "<tr>";
        li_list += "<td>" + Name + "</td>";
        li_list += "<td>" + PhoneNO + "</td>";
        li_list += "<td>" + Email + "</td>";
        li_list += "</tr> ";
       }
       li_list += "</table>";
      }
     }     
    }
  });
}

第二部分是动态的设置页码并添加页码导航的方法

function SetPageCount(count) {
   if (count > 0) {  //设置动态页码
    var li_list = "";
    li_list += "<ul>";
    li_list += "<li id='01preage'><a class='prev'><span></span>上一页</a></li>";
    li_list += "<li><ul>";
    li_list += "<li class='01pageIndex'><a class='active'>1</a></li>";
    for (var i = 2; i <= count; i++) {
     if (i <= 5) {
      li_list += "<li class='01pageIndex'><a>" + i + "</a></li>";
     } else {
      li_list += "<li class='01pageIndex'><a style='display: none;'>" + i + "</a></li>";
     }
    }
    li_list += "</ul></li>";
    li_list += "<li id='01nextage'><a>下一页<span></span></a></li>";
    li_list += "</ul>";
    if (li_list != null && li_list.length > 0) {
     $("#PhonePageCount").html(li_list);
     $('.01pageIndex a').click(function () { //添加添加分页导航的事件
      var pagecounts = $('.01pageIndex a').length;
      $(this).addClass('active');
      $(this).parent().siblings().find('a').removeClass('active');
      var index = $(this).parent().index() || 0;
      if (1 < index && index < pagecounts - 2) {
       $('.01pageIndex a').hide()
       $('.01pageIndex a').eq(index - 2).show();
       $('.01pageIndex a').eq(index - 1).show();
       $('.01pageIndex a').eq(index).show();
       $('.01pageIndex a').eq(index + 1).show();
       $('.01pageIndex a').eq(index + 2).show();
      }
      $('#phonelist>table').siblings().hide();
      $('#phonelist>table').eq(index).show();
     })
     $('#01preage').click(function () {
      var currentPageIndex = $('.01pageIndex').find("a[class$='active']").parent().index();
      var pagecounts = $('.01pageIndex a').length;
      if (currentPageIndex > 0) {
       var thisobj = $('.01pageIndex a').eq(currentPageIndex - 1);
       thisobj.addClass('active');
       thisobj.parent().siblings().find('a').removeClass('active');
       if (0 < currentPageIndex && currentPageIndex < pagecounts - 3) {
        $('.01pageIndex a').hide()
        $('.01pageIndex a').eq(currentPageIndex - 3).show();
        $('.01pageIndex a').eq(currentPageIndex - 2).show();
        $('.01pageIndex a').eq(currentPageIndex - 1).show();
        $('.01pageIndex a').eq(currentPageIndex).show();
        $('.01pageIndex a').eq(currentPageIndex + 1).show();
       }
       $('#phonelist>table').siblings().hide();
       $('#phonelist>table').eq(currentPageIndex - 1).show();
      }
     })
     $('#01nextage').click(function () {
      var currentPageIndex = $('.01pageIndex').find("a[class$='active']").parent().index();
      var pagecount = $('.01pageIndex a').length - 1;
      var pagecounts = $('.01pageIndex a').length;
      if (pagecount > currentPageIndex) {
       var thisobj = $('.01pageIndex').eq(currentPageIndex + 1);
       thisobj.find('a').addClass('active');
       thisobj.siblings().find('a').removeClass('active');
       if (0 < currentPageIndex && currentPageIndex < pagecounts - 3) {
        $('.01pageIndex a').hide()
        $('.01pageIndex a').eq(currentPageIndex - 1).show();
        $('.01pageIndex a').eq(currentPageIndex).show();
        $('.01pageIndex a').eq(currentPageIndex + 1).show();
        $('.01pageIndex a').eq(currentPageIndex + 2).show();
        $('.01pageIndex a').eq(currentPageIndex + 3).show();
       }
       $('#phonelist').siblings().hide();
       $('#phonelist>table').eq(currentPageIndex + 1).show();
      }
     })
    }
  }
}

小结

一个小小的功能,在实现的过程中并不容易不断的调试和优化才让这样的需求得到了合理的实现。但敲代码中也让我更多的感受到了页面导航中所需要考虑到的多元素设计。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript是否可实现多线程  深入理解JavaScript定时机制
Dec 22 Javascript
JS代码优化技巧之通俗版(减少js体积)
Dec 23 Javascript
JavaScript中的面向对象介绍
Jun 30 Javascript
js中定义一个变量并判断其是否为空的方法
May 13 Javascript
jQuery中children()方法用法实例
Jan 07 Javascript
JavaScript Math.ceil 方法(对数值向上取整)
Jan 09 Javascript
分享10个原生JavaScript技巧
Apr 20 Javascript
关于JavaScript中事件绑定的方法总结
Oct 26 Javascript
给easyui datebox扩展一个清空的实例
Nov 09 Javascript
jquery实现图片列表鼠标移入微动
Dec 01 Javascript
vue使用screenfull插件实现全屏功能
Sep 17 Javascript
工作中常用js功能汇总
Nov 07 Javascript
vue随机验证码组件的封装实现
Feb 19 #Javascript
JavaScript实现PC端四格密码输入框功能
Feb 19 #Javascript
vue实现带过渡效果的下拉菜单功能
Feb 19 #Javascript
Vue.js仿Select下拉框效果
Feb 18 #Javascript
JavaScript中的惰性载入函数及优势
Feb 18 #Javascript
jquery实现垂直手风琴导航栏
Feb 18 #jQuery
vue微信分享插件使用方法详解
Feb 18 #Javascript
You might like
在普通HTTP上安全地传输密码
2007/07/21 PHP
php中inlcude()性能对比详解
2012/09/16 PHP
php实现删除指定目录下相关文件的方法
2014/10/20 PHP
php 函数使用可变数量的参数方法
2017/05/02 PHP
php数据序列化测试实例详解
2017/08/12 PHP
extJs 常用到的增,删,改,查操作代码
2009/12/28 Javascript
用jQuery打造TabPanel效果代码
2010/05/22 Javascript
中文路径导致unitpngfix.js不正常的解决方法
2013/06/26 Javascript
Javascript合并表格中具有相同内容单元格示例
2013/08/11 Javascript
js抽奖实现随机抽奖代码效果
2013/12/02 Javascript
js获得当前时区夏令时发生和终止的时间代码
2014/02/23 Javascript
Javascript学习笔记之 函数篇(二) : this 的工作机制
2014/06/24 Javascript
jquery插件jquery.beforeafter.js实现左右拖拽分隔条对比图片的方法
2015/08/07 Javascript
javascript实现自动填写表单实例简析
2015/12/02 Javascript
javascript实现数组去重的多种方法
2016/03/14 Javascript
AngularJS控制器继承自另一控制器
2016/05/09 Javascript
一览画面点击复选框后获取多个id值的方法
2016/05/30 Javascript
JS简单验证上传文件类型的方法
2017/04/17 Javascript
Python的Flask框架应用程序实现使用QQ账号登录的方法
2016/06/07 Python
Python Unittest自动化单元测试框架详解
2018/04/04 Python
python递归全排列实现方法
2018/08/18 Python
Python实现 版本号对比功能的实例代码
2019/04/18 Python
Python2.7实现多进程下开发多线程示例
2019/05/31 Python
Pytorch对Himmelblau函数的优化详解
2020/02/29 Python
python+adb+monkey实现Rom稳定性测试详解
2020/04/23 Python
什么是静态路由?什么是动态路由?各自的特点是什么?
2015/09/16 面试题
英语商务邀请函范文
2014/01/16 职场文书
中学自我评价
2014/01/31 职场文书
人事部岗位职责范本
2014/03/05 职场文书
教师节活动主持词
2014/04/02 职场文书
公司董事长助理工作职责
2014/07/12 职场文书
酒店七夕情人节活动策划方案
2014/08/24 职场文书
农村党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
再次探讨go实现无限 buffer 的 channel方法
2021/06/13 Golang
MySQL中存储时间的最佳实践指南
2021/07/01 MySQL
mysql使用FIND_IN_SET和group_concat两个方法查询上下级机构
2022/04/20 MySQL