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 关键字“拖曳搜索”之“拖曳”以及 图片“提示自适应放大”效果 的实现
Apr 18 Javascript
50个比较实用jQuery代码段
Sep 18 Javascript
JavaScript设计模式之观察者模式(发布者-订阅者模式)
Sep 24 Javascript
jquery.ajax之beforeSend方法使用介绍
Dec 08 Javascript
一波JavaScript日期判断脚本分享
Mar 06 Javascript
jquery实现下拉框多选方法介绍
Jan 03 Javascript
JS中实现函数return多个返回值的实例
Feb 21 Javascript
Vue.js事件处理器与表单控件绑定详解
Mar 20 Javascript
react配合antd组件实现的管理系统示例代码
Apr 24 Javascript
layui 优化button按钮和弹出框的方法
Aug 15 Javascript
微信小程序云函数添加数据到数据库的方法
Mar 04 Javascript
vue使用过滤器格式化日期
Jan 20 Vue.js
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
WINDOWS 2000下使用ISAPI方式安装PHP
2006/09/05 PHP
谈谈新手如何学习PHP 默默经典版本
2009/08/04 PHP
CodeIgniter模板引擎使用实例
2014/07/15 PHP
PHP的cURL库简介及使用示例
2015/02/06 PHP
PHP+MYSQL实现用户的增删改查
2015/03/24 PHP
PHP查找数值数组中不重复最大和最小的10个数的方法
2015/04/20 PHP
PHP微信开发之二维码生成类
2015/06/26 PHP
织梦sitemap地图实时推送给百度的教程
2015/08/03 PHP
PHP5.0 TIDY_PARSE_FILE缓冲区溢出漏洞的解决方案
2018/10/14 PHP
js传值 判断
2006/10/26 Javascript
鼠标拖拽移动子窗体的JS实现
2014/02/25 Javascript
javascript学习总结之js使用技巧
2015/09/02 Javascript
JavaScript+html5 canvas制作的圆中圆效果实例
2016/01/27 Javascript
Node.js的MongoDB驱动Mongoose基本使用教程
2016/03/01 Javascript
JavaScript实现自动切换图片代码
2016/10/11 Javascript
常见的浏览器Hack技巧整理
2017/06/29 Javascript
解决vue-cli单页面手机应用input点击手机端虚拟键盘弹出盖住input问题
2018/08/25 Javascript
vue.js指令v-for使用以及下标索引的获取
2019/01/31 Javascript
JavaScript 面向对象基础简单示例
2019/10/02 Javascript
浅谈vue 二级路由嵌套和二级路由高亮问题
2020/08/06 Javascript
[14:36]2014 DOTA2国际邀请赛中国区预选赛5.21 Orenda VS NE
2014/05/22 DOTA
python转换摩斯密码示例
2014/02/16 Python
Python中SOAP项目的介绍及其在web开发中的应用
2015/04/14 Python
Python使用Pickle模块进行数据保存和读取的讲解
2019/04/09 Python
python数值基础知识浅析
2019/11/19 Python
Python下载网易云歌单歌曲的示例代码
2020/08/12 Python
Python基于staticmethod装饰器标示静态方法
2020/10/17 Python
中国最大的团购网站:聚划算
2016/09/21 全球购物
阿拉伯时尚购物网站:Nisnass
2021/02/07 全球购物
《都江堰》教学反思
2014/02/07 职场文书
2014年工程工作总结
2014/11/25 职场文书
高三语文复习计划
2015/01/19 职场文书
学雷锋团日活动总结
2015/05/06 职场文书
收入证明怎么写
2015/06/12 职场文书
市场营销计划书
2019/04/24 职场文书
利用Python实现模拟登录知乎
2022/05/25 Python