zoukankan      html  css  js  c++  java
  • 纯JS实现前端动态分页码

    思路分析:有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{
                 500px;
                height: 100px;
                border: 2px solid crimson;
                
                margin: 50px auto ;
                padding-top: 50px ;
                padding-left: 50px;
            }
            
            .over,.pageItem{
                float: left;
                display: block;
                 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"><</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">></a>';
            }else{
                if(curPage<pageTotal-2){ 
                    html += '<span>...</span>';
                }
                if(curPage<=pageTotal-2){
                    html += '<a href="#">'+pageTotal+'</a>';
                }
                html+='<a href="#" id="nextBtn">></a>';
            }
            return html;
        }
        
    </script>
    

      

  • 相关阅读:
    应用性能提升 要速度也要激情
    投票练习题
    租房子多条件查询练习
    JS时间戳格式化日期时间 由于mysql数据库里面存储时间存的是时间戳,取出来之后,JS要格式化一下显示。
    处理PHP字符串的10个简单方法;mysql出现乱码:character_set_server=utf8
    预定义数组(超全局数组)]
    静态方法
    类的构造方法和析构方法和封装的目的和封装的做法+访问修饰符
    面向对象与面向过程 $this的注意事项和魔术方法set和get
    PHP正则表达式;数组:for()遍历、 foreach ()遍历、each()list()组合遍历;指针遍历
  • 原文地址:https://www.cnblogs.com/ypppt/p/13331048.html
Copyright © 2011-2022 走看看