纯JS实现前端动态分页码

更新日期: 2018-10-11阅读量: 2925标签: 前端

思路分析:有3种情况

第一种情况,当前页面curPage < 4


第二种情况,当前页面curPage == 4


第三种情况,当前页面curPage>4


此外,还要考虑,当前页码 curPage < pageTotal(总页码)-2,才显示 ...

 

首先,先是前端的布局样式

<body>
      /*首先,在body中添加div id="pagination" */
      <div id="pagination">
<!-- 后面会在js中动态追加 ,此处为了,实现前端效果,所以注册
<a id="prevBtn"><</a>
<a id="first">1</a>
<a href="#">2</a>
<a href="#">3</a>
<a href="#">4</a>
<span>...</span>
<a href="#" id="last">10</a>
<a href="#" id="nextBtn">></a>
-->

      </div>
</body>


其次,是css代码

*{
            margin: 0;
            padding: 0;
        }
        #pagination{
            width: 500px;
            height: 100px;
            border: 2px solid crimson;
            
            margin: 50px auto ;
            padding-top: 50px ;
            padding-left: 50px;
        }
        
        .over,.pageItem{
            float: left;
            display: block;
            width: 35px;
            height: 35px;
            line-height: 35px;
            text-align: center;
        }
        
        .pageItem{
            border: 1px solid orangered;
            text-decoration: none;
            color: dimgrey;
            margin-right: -1px;/*解决边框加粗问题*/
        }
        .pageItem:hover{
            background-color: #f98e4594;
            color:orangered ;
        }
        .clearfix{
            clear: both;
        }
        .active{
            background-color: #f98e4594;
            color:orangered ;
        }
        .banBtn{
            border:1px solid #ff980069;
            color: #ff980069;
        }
        #prevBtn{
            margin-right: 10px;
        }
        #nextBtn{
            margin-left: 10px;
        }

JavaScript代码

<script type="text/JavaScript">
    
    var pageOptions = {pageTotal:10,curPage:7,paginationId:''};
    dynamicPagingFunc(pageOptions);
    
    function dynamicPagingFunc(pageOptions){
        var pageTotal = pageOptions.pageTotal || 1;
        var curPage = pageOptions.curPage||1;
        var doc = document;
        var paginationId = doc.getElementById(''+pageOptions.paginationId+'') || doc.getElementById('pagination');
        var html = '';
        if(curPage>pageTotal){
            curPage =1;
        }
        /*总页数小于5,全部显示*/
        if(pageTotal<=5){
            html = appendItem(pageTotal,curPage,html);
            paginationId.innerHTML = html;
        }
        /*总页数大于5时,要分析当前页*/
        if(pageTotal>5){
            if(curPage<=4){
                html = appendItem(pageTotal,curPage,html);
                paginationId.innerHTML = html;
            }else if(curPage>4){
                html = appendItem(pageTotal,curPage,html);
                paginationId.innerHTML = html;
            }
        }
    }
    
    function appendItem(pageTotal,curPage,html){
        var starPage = 0;
        var endPage = 0;
        
        html+='<a id="prevBtn">&lt;</a>';
        
        if(pageTotal<=5){
            starPage = 1;
            endPage = pageTotal;    
        }else if(pageTotal>5 && curPage<=4){
            starPage = 1;
            endPage = 4;
            if(curPage==4){
                endPage = 5;
            }
        }else{
            if(pageTotal==curPage){
                starPage = curPage-3;
                endPage = curPage;
            }else{
                starPage = curPage-2;
                endPage = curPage+1;
            }
            html += '<a id="first">1</a><span>...</span>';
        }
        
        for(let i = starPage;i <= endPage;i++){
            if(i==curPage){
                html += '<a id="first">'+i+'</a>';
            }else{
                html += '<a href="#">'+i+'</a>';
            }
        }
        
        if(pageTotal<=5){
            html+='<a href="#" id="nextBtn">&gt;</a>';
        }else{
            if(curPage<pageTotal-2){ 
                html += '<span>...</span>';
            }
            if(curPage<=pageTotal-2){
                html += '<a href="#">'+pageTotal+'</a>';
            }
            html+='<a href="#" id="nextBtn">&gt;</a>';
        }
        return html;
    }
    
</script>

来源:https://www.cnblogs.com/littleboyck/archive/2018/10/10/9769051.html


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

链接: https://www.fly63.com/article/detial/1135

前端如何高效的与后端协作开发

前端与后端的分离,能使前端的开发脱离后端的开发模式,拥有更大的自由度,以此便可做前端工程化、组件化、单页面应用等。不管工具多么厉害,很多时候都免不了要当面沟通,友好、心平气和的沟通也是很重要的哩!

前端Js生成GUID的方法

需要GUID的时候,可以完全由算法自动生成,不需要一个权威机构来管理。GUID理论上能产生全球唯一的值,对于以后的数据导入很方便。生成两个相同的GUID的可能性非常小,但不为0

Web前端开发怎么入门?

Web前端开发怎么入门,主要都有哪些要素组成?Web前端开发是由网页制作演变而来的,主要由HTML、CSS、JavaScript三大要素组成。专业的Web前端开发入门知识也一定会包含这些内容,下面就给大家简单介绍一下。

为什么前端开发这么不稳定?

我们都有这样的经历:当学习了一种前端技术的时候,同时会有几种新的前端技术诞生。 还有,你选择的那种前端技术,也许已经过时了。然而我们似乎也从来没有关注为什么会这样

晋级高级前端的四大建议

要成功晋级高级前端开发,面试中的表现尤为重要。如何让面试官觉得你是一名合格的高级前端工程师,如何流利地回答面试官的问题?首先你要了解面试时他们关注哪几点:

转行web前端,需要哪些工具和需要学习什么?

今天我们来谈谈Web和前端开发过程中需要学习什么?前端开发需要使用什么开发工具?也简单介绍前端开发前景和薪水。

女生30 岁转行做前端开发,晚吗?

30岁转行做前端程序开发!请把“晚吗”去掉。50多岁大爷都学编程了。你还担心啥?先从年龄上来说,这个年龄进入IT职业,那是相当棒的黄金时间,有目标,有干劲,有新颖的思想,而且仍是女孩子。

Web前端是什么?学习web前端的建议

目前,在移动互联网行业中较为火热、势头猛烈的当属Web前端开发。且在2019年招聘旺季中,Web前端开发程序员处于供不应求的状态,对于0基础想要从事互联网行业的小伙伴们,Web前端将会是最合适的入门编程语言。而且根据后期的职业发展规划来看

多种认证、授权模型的比较

本文主要列举在如今前后端分离、手机App大行其道的现状下,用户认证、授权的几种做法及对比。本文假设你已经理解了各种认证模式的具体细节。

一篇文章了解大前端

大前端不仅会成为移动开发与Web前端的发展趋势,也将会是未来的显示设备终端的开发技术趋势。大前端将做更多的终端开发、工程化等工作,而不仅仅只是开发Web页面。大前端工程师将能搞定所有端上的开发。与充满争议的全栈工程师相比,它更具可操作性。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!