js 手写分页

效果:

原型是angular编写的一下为angular1.X语法

HTML:

      <div class="pull-left flex-r">
        <div class="prev"><a href ng-click="prev()">上一页</a></div>
        <ul class="pagination pageUl" ng-init="ininPageBox()" id="pageBox"></ul>
        <div class="next"><a href ng-click="next()">下一页</a></div>
      </div>

JS:

       $scope.entity={
        list:[],      //所有数据
        crruentList:[],   //1页显示数据
        
      }
      $scope.page = {
        currentPage: 1, // 当前页 (请求数据)
        pageSize: 2, // 每页记录数 (请求数据)
        totalCount: 0, // 总记录数 (响应数据)
        totalPages: 0, // 总页数 (根据 总记录数、每页记录数 计算 )
      }

      $scope.ininPageBox= function(){
        element = document.getElementById('pageBox')
        $scope.selectPage(1);     //初始化第一页
      }
        
      //指定页
      var element;
      $scope.selectPage = function(page){
        $(element).empty()
        // page 超出范围
        if($scope.page.totalPages != 0 && (page < 1 || page > $scope.page.totalPages)) {
          return;
        }
        $scope.page.totalCount = $scope.entity.list.length; //总记录数
        $scope.page.totalPages = Math.ceil($scope.entity.list.length/$scope.page.pageSize)    //总页数
        $scope.page.currentPage = page;  //当前页
        $scope.entity.crruentList =$scope.entity.list.slice(($scope.page.currentPage-1)*$scope.page.pageSize,$scope.page.currentPage*$scope.page.pageSize)

        var content =''   //初始化内容
        if($scope.page.totalPages > 6){
          if($scope.page.currentPage <5){
            for(let i =1; i< 6; i++){
              if($scope.page.currentPage == i){
                content+=`<li class='current' ng-click="selectPage(${i})">${i}</li>`
              }else{
                content +=`<li ng-click="selectPage(${i})">${i}</li>`
              }
            }
            content +=`<li class='prohibit'>···</li><li ng-click="selectPage(${$scope.page.totalPages})">${$scope.page.totalPages}</li>`
          }else{
            if($scope.page.currentPage < $scope.page.totalPages -3){
              for(let i = $scope.page.currentPage -2; i<$scope.page.currentPage +3; i++){
                if($scope.page.currentPage == i){
                  content+=`<li class='current' ng-click="selectPage(${i})">${i}</li>`
                }else{
                  content +=`<li ng-click="selectPage(${i})">${i}</li>`
                }
              }
              content +=`<li class='prohibit'>···</li><li ng-click="selectPage(${$scope.page.totalPages})">${$scope.page.totalPages}</li>`
            }else{
              content +=`<li ng-click="selectPage(1)">1</li><li class='prohibit'>···</li>`
              for(let i=$scope.page.totalPages-4;i<$scope.page.totalPages+1;i++){
                if($scope.page.currentPage == i){
                  content+=`<li class='current' ng-click="selectPage(${i})">${i}</li>`
                }else{
                  content +=`<li ng-click="selectPage(${i})">${i}</li>`
                }
              }
            }
          }
        }else{
          for(let i=1;i<$scope.page.totalPages+1;i++){
            if($scope.page.currentPage == i){
              content+=`<li class='current' ng-click="selectPage(${i})">${i}</li>`
            }else{
              content +=`<li ng-click="selectPage(${i})">${i}</li>`
            }
          }
        }
        content = angular.element(content)
        $compile(content)($scope);
        $(element).append(content)
      }

      //加载上一页
      $scope.prev = function() {
        if ($scope.page.currentPage == 1) {
          $scope.selectPage(1);
        } else {
          $scope.selectPage($scope.page.currentPage - 1);
        }
      }
      //加载下一页
      $scope.next = function() {
        if ($scope.page.currentPage == $scope.page.totalPages) {
          $scope.selectPage($scope.page.totalPages);
        } else {
          $scope.selectPage($scope.page.currentPage + 1);
        }
      }
        

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值