JavaScript分页组件使用方法详解


Posted in Javascript onJuly 26, 2021

分页组件是web开发中常见的组件,请完成pagination函数,在id为jsPagination的DOM元素中完成分页的显示部分,需求如下

1、最多连续显示5页,居中高亮显示current页(如demo1所示)
2、total为0时,隐藏整个元素(如demo2所示)
3、如果total<=5,则显示全部页数,隐藏“首页”和“末页”元素(如demo3所示)
4、当current居中不足5页,向后(前)补足5页,隐藏“首页”(“末页”)元素(如demo4和demo5所示)
5、total、current均为正整数,1 <= current <= total

JavaScript分页组件使用方法详解

用原生JS实现分页组件,实现上述需求。需要注意下面几点

1:在获取<li>标签的时候,由于上一个<li>标签与下一个<li>标签之前存在文本节点,需要两次使用nextSibling,

page = page.nextSibling.nextSibling;

2:提供的<li>标签的innerHTML为‘',需要在其中添加页码,根据需求中的五种情况写

3:特别注意首页、末页的隐藏情况。当current-2<=1 时隐藏首页,当current+2.>=total隐藏末页,需要隐藏首页、末页存在于上述demo1、demo3、demo4、demo5。(其中demo1 首页、末页的隐藏很容易被忽略掉!)

HTML

<ul class="pagination" id="jsPagination">
    <li>首页</li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li>末页</li>
</ul>

css

.hide{
    display: none!important;
}
.pagination{
    margin: 0 auto;
    padding: 0;
    list-style: none;
    text-align: center;
}
.pagination li{
    display: inline-block;
    width: 30px;
    height: 30px;
    overflow: hidden;
    line-height: 30px;
    margin: 0 5px 0 0;
    font-size: 14px;
    text-align: center;
    border: 1px solid #00bc9b;
    color: #00bc9b;
    cursor: pointer;
}
.pagination li.current,
.pagination li:hover{
    background: #00bc9b;
    color: #ffffff;
}
.demo {
    margin: 10px 0;
    padding: 10px;
    background: #eeeeee;
    text-align: center;
}

JavaScript

function pagination(total, current) {
        var ele=document.getElementById('jsPagination');
        //for demo1
        if(current-2>=1&¤t+2<=total)
        {
            var page=ele.firstChild.nextSibling;
            if(current-2==1)
                page.className='hide';
            for(var i=current-2,p=current-2;i<=current+2;p++,i++)
            {
                page=page.nextSibling;
                console.log(page);
                page=page.nextSibling;
                console.log(page);
                page.innerHTML=i;
                if(i==current)
                    page.className='current';
            }
            if(current+2==total)
            {
                var last=page.nextSibling.nextSibling;
                last.className='hide';
            }
        }
        //for demo2
        else if(total==0)
        {
            ele.className='pagination hide';
        }
        //for demo3
        else if(total<=5)
        {
            var fir=ele.firstChild.nextSibling;
            fir.className='hide';
            var page=fir;
            for(var i=1;i<=5;i++) {
                page = page.nextSibling.nextSibling;
                if (i <= total) {
                    page.innerHTML=i;
                    if(i==current)
                        page.className='current';
                }
                else
                {
                    page.className='hide';
                }
 
            }
            var last=page.nextSibling.nextSibling;
            last.className='hide';
        }
        //for demo4
        else if(current-2<=0)
        {
            var page=ele.firstChild.nextSibling;
            page.className='hide';
            for(var i=1;i<=5;i++) {
                page = page.nextSibling.nextSibling;
                page.innerHTML=i;
                    if(i==current)
                        page.className='current';
            }
 
        }
        //for demo5
        else if(current+2>total)
        {
            var page=ele.firstChild.nextSibling;
            for(var i=total-4;i<=total;i++) {
                page = page.nextSibling.nextSibling;
                page.innerHTML=i;
                if(i==current)
                    page.className='current';
            }
            var last=page.nextSibling.nextSibling;
            last.className='hide';
 
        }
}

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

Javascript 相关文章推荐
JQuery 学习笔记 选择器之一
Jul 23 Javascript
js href的用法
May 13 Javascript
Jquery插件 easyUI属性汇总
Jan 19 Javascript
Node.js 的异步 IO 性能探讨
Oct 08 Javascript
创建、调用JavaScript对象的方法集锦
Dec 24 Javascript
javascript内置对象操作详解
Feb 04 Javascript
完美解决IE不支持Data.parse()的问题
Nov 24 Javascript
常用的几个JQuery代码片段
Mar 13 Javascript
vue element动态渲染、移除表单并添加验证的实现
Jan 16 Javascript
微信小程序时间标签和时间范围的联动效果
Feb 15 Javascript
vue实现搜索功能
May 28 Javascript
vue npm install 安装某个指定的版本操作
Aug 11 Javascript
webpack的移动端适配方案小结
Jul 25 #Javascript
Vue3.0 手写放大镜效果
ElementUI实现el-form表单重置功能按钮
vue项目多环境配置(.env)的实现
Node与Python 双向通信的实现代码
Jul 16 #Javascript
node.js如何自定义实现一个EventEmitter
Jul 16 #Javascript
node.js使用express-fileupload中间件实现文件上传
Jul 16 #Javascript
You might like
php 全文搜索和替换的实现代码
2008/07/29 PHP
php面向对象全攻略 (九)访问类型
2009/09/30 PHP
php中get_magic_quotes_gpc()函数说明
2017/02/06 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
Laravel框架之解决前端显示图片问题
2019/10/24 PHP
javascript动画之圆形运动,环绕鼠标运动作小球
2010/07/20 Javascript
JQuery显示、隐藏div的几种方法简明总结
2015/04/16 Javascript
javascript中数组方法汇总
2015/07/07 Javascript
Web程序员必备的7个JavaScript函数
2016/06/14 Javascript
Bootstrap警告(Alerts)的实现方法
2017/03/22 Javascript
DVA框架统一处理所有页面的loading状态
2017/08/25 Javascript
15个顶级开源JavaScript框架和库
2018/10/10 Javascript
KOA+egg.js集成kafka消息队列的示例
2018/11/09 Javascript
jQuery实现的五星点评功能【案例】
2019/02/18 jQuery
说说如何利用 Node.js 代理解决跨域问题
2019/04/22 Javascript
python根据距离和时长计算配速示例
2014/02/16 Python
Python ORM框架SQLAlchemy学习笔记之安装和简单查询实例
2014/06/10 Python
Python库urllib与urllib2主要区别分析
2014/07/13 Python
Python实现的RSS阅读器实例
2015/07/25 Python
Python学习笔记之if语句的使用示例
2017/10/23 Python
Python切片操作实例分析
2018/03/16 Python
python矩阵的转置和逆转实例
2018/12/12 Python
pytorch模型存储的2种实现方法
2020/02/14 Python
python开发前景如何
2020/06/11 Python
日本无添加化妆品:HABA
2016/08/18 全球购物
伦敦剧院门票:London Theatre Direct
2018/11/21 全球购物
老教师工作总结的自我评价
2013/09/27 职场文书
球队口号
2014/06/18 职场文书
小学庆六一活动总结
2014/08/28 职场文书
基层党员群众路线整改措施及努力方向
2014/10/28 职场文书
单位委托函范文
2015/01/29 职场文书
教师党员自我评价2015
2015/03/04 职场文书
学雷锋团日活动总结
2015/05/06 职场文书
python urllib库的使用详解
2021/04/13 Python
Html5新增了哪些功能
2021/04/16 HTML / CSS
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
2021/04/27 Python