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 相关文章推荐
比较详细的javascript对象的property和prototype是什么一种关系
Aug 06 Javascript
JS实现网页滚动条感应鼠标变色的方法
Feb 26 Javascript
JavaScript中this详解
Sep 01 Javascript
jQuery-1.9.1源码分析系列(十一)DOM操作续之克隆节点
Dec 01 Javascript
javascript瀑布流式图片懒加载实例解析与优化
Feb 23 Javascript
基于javascript实现句子翻牌网页版小游戏
Mar 23 Javascript
全面了解JavaScript的数据类型转换
Jul 01 Javascript
AngularJS入门教程之双向绑定详解
Aug 18 Javascript
JS实战篇之收缩菜单表单布局
Dec 10 Javascript
Vue 中使用vue2-highcharts实现top功能的示例
Mar 05 Javascript
《javascript设计模式》学习笔记七:Javascript面向对象程序设计组合模式详解
Apr 08 Javascript
JS数组转字符串实现方法解析
Sep 04 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 checkbox 取值详细说明
2010/08/19 PHP
php登陆页的密码处理方式分享
2013/10/14 PHP
Symfony数据校验方法实例分析
2015/01/26 PHP
php递归删除指定文件夹的方法小结
2015/04/20 PHP
php中file_exists函数使用详解
2015/05/08 PHP
PHP 500报错的快速解决方法
2016/12/14 PHP
CI框架(CodeIgniter)公共模型类定义与用法示例
2017/08/10 PHP
PHP implode()函数用法讲解
2019/03/08 PHP
php中isset与empty函数的困惑与用法分析
2019/07/05 PHP
有一段有意思的代码-javascript现实多行信息
2007/08/26 Javascript
jQuery调用WebService的实现代码
2011/06/19 Javascript
ASP.NET jQuery 实例10 动态修改hyperlink的URL值
2012/02/03 Javascript
JS自调用匿名函数具体实现
2014/02/11 Javascript
浅谈JS原型对象和原型链
2016/03/02 Javascript
javascript比较语义化版本号的实现代码
2016/09/09 Javascript
vue计算属性时v-for处理数组时遇到的一个bug问题
2018/01/21 Javascript
vue框架搭建之axios使用教程
2018/07/11 Javascript
微信小程序修改数组长度的问题的解决
2019/12/17 Javascript
[05:17]DOTA2睡衣妹卖萌求签名 CJ第二天全明星影像
2013/07/28 DOTA
PYTHON压平嵌套列表的简单实现
2016/06/08 Python
Python使用SQLite和Excel操作进行数据分析
2018/01/20 Python
Python实现求解一元二次方程的方法示例
2018/06/20 Python
Django框架的中的setting.py文件说明详解
2018/10/15 Python
Python3爬虫学习之爬虫利器Beautiful Soup用法分析
2018/12/12 Python
简单了解Python3 bytes和str类型的区别和联系
2019/12/19 Python
python 中关于pycharm选择运行环境的问题
2020/10/31 Python
利用python 下载bilibili视频
2020/11/13 Python
python实现简单的井字棋游戏(gui界面)
2021/01/22 Python
CSS3实现淘宝留白的方法
2020/06/05 HTML / CSS
免费获得微软MCSD证书赶快行动吧!
2012/11/13 HTML / CSS
阿巴庭院:Abba Patio
2019/06/18 全球购物
大二自我鉴定范文
2013/10/05 职场文书
家长对老师的感言
2014/03/11 职场文书
党的群众路线教育实践活动整改落实情况自查报告
2014/10/28 职场文书
Oracle笔记
2021/04/05 Oracle
用JS实现飞机大战小游戏
2021/06/09 Javascript