js实现分页功能


Posted in Javascript onMay 24, 2017

本文仅为自己记录下编写过程,如有兴趣,或者疑问,请与我联系。

写前背景:java开发工作经验一年,现项目为SSM框架,使用maven管理项目。需要页面查询实现分页,网上找了很多插件,单独页面实现是好的,可是放到我的页面就没有效果,苦于自己也找不到原因,故写以下代码,很是粗糙,不过懒得整理成js文件了。

效果:第一页时,首页和上一页为不可点击,最后一页时,下一页和尾页不可点击,页数只会显示5个

js实现分页功能

实现的js:

//分页function
$(document).ready(function(){
 //获取分页数
 var talPage = ${countPage};
 //获取当前页数
 var pageIndex = ${pageIndex};
 var ul = document.getElementById("getPage");
 document.getElementById("getPage").innerHTML="";
 var li_0 = document.createElement("li");
 li_0.innerHTML = "总共:"+${count}+"条,共:"+${countPage }+"页,每页:10条";
 ul.appendChild(li_0);
 if(talPage==1 || pageIndex == 1){//第一页首页和上一页不可操作
  var li_1 = document.createElement("li");
  li_1.setAttribute("class","pageItemDisable bt4");
  li_1.setAttribute("onclick","pageClick(this)")
  li_1.innerHTML = "首页";
  ul.appendChild(li_1);
  var li_2 = document.createElement("li");
  li_2.setAttribute("class","pageItemDisable bt4");
  li_2.setAttribute("onclick","pageClick(this)")
  li_2.innerHTML = "上一页"
  ul.appendChild(li_2);
 }else{
  var li_1 = document.createElement("li");
  li_1.setAttribute("class","pageItem bt4");
  li_1.setAttribute("onclick","pageClick(this)")
  li_1.innerHTML = "首页";
  ul.appendChild(li_1);
  var li_2 = document.createElement("li");
  li_2.setAttribute("class","pageItem bt4");
  li_2.setAttribute("onclick","pageClick(this)")
  li_2.innerHTML = "上一页"
  ul.appendChild(li_2);
 }
 //之前需要将,上一页创建出来
 if(talPage<=5){
  //总页数在0到5之间时,显示实际的页数
  for(var i=0;i<talPage;i++){
   if(i+1 == pageIndex){//循环数和当前页相等时,为当前页样式
    var li = document.createElement("li");
    li.setAttribute("class","pageItemActive");
    li.setAttribute("onclick","pageClick(this)")
    li.innerHTML = i+1;
    ul.appendChild(li);
   }else{
    var li = document.createElement("li");
    li.setAttribute("class","pageItem");
    li.setAttribute("onclick","pageClick(this)")
    li.innerHTML = i+1;
    ul.appendChild(li);
   }

  }
 }else if(talPage>5){
  //总页数大于5时,只显示五页,多出的隐藏
  //判断当前页的位置
  if(pageIndex<=3){//当前页小于等于3时,显示1-5
   for(var i=0;i<5;i++){
    if(i+1 == pageIndex){//循环数和当前页相等时,为当前页样式
     var li = document.createElement("li");
     li.setAttribute("class","pageItemActive");
     li.setAttribute("onclick","pageClick(this)")
     li.innerHTML = i+1;
     ul.appendChild(li);
    }else{
     var li = document.createElement("li");
     li.setAttribute("class","pageItem");
     li.setAttribute("onclick","pageClick(this)")
     li.innerHTML = i+1;
     ul.appendChild(li);
    }
   }
  }else if(pageIndex>talPage-5){//当前页为最后五页时
   for(var i=talPage-5;i<talPage;i++){
    if(i+1 == pageIndex){//循环数和当前页相等时,为当前页样式
     var li = document.createElement("li");
     li.setAttribute("class","pageItemActive");
     li.setAttribute("onclick","pageClick(this)")
     li.innerHTML = i+1;
     ul.appendChild(li);
    }else{
     var li = document.createElement("li");
     li.setAttribute("class","pageItem");
     li.setAttribute("onclick","pageClick(this)")
     li.innerHTML = i+1;
     ul.appendChild(li);
    }
   }
  }else{//当前页为中间时
   for(var i=pageIndex-3;i<pageIndex+2;i++){
    if(i+1 == pageIndex){//循环数和当前页相等时,为当前页样式
     var li = document.createElement("li");
     li.setAttribute("class","pageItemActive");
     li.setAttribute("onclick","pageClick(this)")
     li.innerHTML = i+1;
     ul.appendChild(li);
    }else{
     var li = document.createElement("li");
     li.setAttribute("class","pageItem");
     li.setAttribute("onclick","pageClick(this)")
     li.innerHTML = i+1;
     ul.appendChild(li);
    }
   } 
  }
 }
 if(pageIndex == talPage){//当前页为最大页时,下一个和尾页不可操作
  var li_3 = document.createElement("li");
  li_3.setAttribute("class","pageItemDisable bt4");
  li_3.setAttribute("onclick","pageClick(this)")
  li_3.innerHTML = "下一页"
  ul.appendChild(li_3);
  var li_4 = document.createElement("li");
  li_4.setAttribute("class","pageItemDisable bt4");
  li_4.setAttribute("onclick","pageClick(this)")
  li_4.innerHTML = "尾页"
  ul.appendChild(li_4);
 }else{
  var li_3 = document.createElement("li");
  li_3.setAttribute("class","pageItem bt4");
  li_3.setAttribute("onclick","pageClick(this)")
  li_3.innerHTML = "下一页"
  ul.appendChild(li_3);
  var li_4 = document.createElement("li");
  li_4.setAttribute("class","pageItem bt4");
  li_4.setAttribute("onclick","pageClick(this)")
  li_4.innerHTML = "尾页"
  ul.appendChild(li_4);
 }
 if(0 == talPage){//一页都没有时,将首页,上一页,下一个,尾页都置为不可操作
   $(".bt4").removeClass("pageItem");
   $(".bt4").addClass("pageItemDisable");
 }

});
//分页的按钮的点击事件
function pageClick(obj){
 var talPage = ${countPage};//总页数
 var pageIndex = ${pageIndex};//当前页数
 var text = obj.innerText;//点击标签的值
 var url = "<%=path%>/service/getServiceList.action";
 //如果为不可操作的直接返回false
  if($(obj).attr("class").indexOf("pageItemDisable")>=0){
  return false;
 } 
 with(document.forms["serviceForm"]){
  if("首页" == text){
   action = url;

  }else if("上一页" == text){
   //计算出上一页到底是第几页
   //第一种方法,获取当前li中class为pageItemActive的标签,取其值
   //第二种方法,直接el ${pageIndex}获取当前页数,然后-1
   //var a = $(obj).parent().children("pageItemActive").html();
   //如果当前页是1,不-,地址和首页相同
   if(pageIndex <= 1){
    action = url;   
   }else{
    action = url+"?pageIndex="+(pageIndex-1);
   }
  }else if("下一页" == text){
   //如果当前页为尾页,则下一页为尾页,url跟当前url一样
   if(pageIndex == talPage){
    action = url;
   }else{
    action = url+"?pageIndex="+(pageIndex+1);
   }
  }else if("尾页" == text){
   //如果当前页为尾页,则url不变
   if(pageIndex == talPage){
    action = url;
   }else{
    action = url+"?pageIndex="+talPage;
   }
  }else{
   //点击页数时
   action = url+"?pageIndex="+text;

  }
  submit();
 }

}

页面元素:

<ul id="getPage" class="page" style="list-style-type:none;"></ul>

所用到的css样式:

<style type="text/css">
 <!-- 分页处的样式 -->
 .page{
 list-style: none;
}
.page>li{
 float: left;
 padding: 5px 10px;
 cursor: pointer;
}
.page .pageItem{
 border: solid thin #DDDDDD;
 margin: 5px;
}
.page .pageItemActive{
 border: solid thin #0099FF;
 margin: 5px;
 background-color: #0099FF;
 color:white;
}
.page .pageItem:hover{
 border: solid thin #0099FF;
 background-color: #0099FF;
 color:white;
}
.page .pageItemDisable{
 border: solid thin #DDDDDD;
 margin: 5px;
 background-color: #DDDDDD;
}

</style>

java中处理:

//获取当前页
   String pageIndex = "1";//默认为第一页
   if(null != request.getParameter("pageIndex") && !"".equals(request.getParameter("pageIndex"))){
    pageIndex = (String)request.getParameter("pageIndex");
   }
   //最后需要将当前页返回给前台,用于样式的展示
   request.setAttribute("pageIndex", pageIndex);
   //一顿计算。。。。,取得startNum,endNum
   String startNum = Integer.toString(((Integer.parseInt(pageIndex)-1)*10)+1);
   String endNum = Integer.toString(Integer.parseInt(startNum)+9);
   //根据条件查询
   List<Service> serviceList = serviceServiceImpl.findAll(service,startNum,endNum);
   //查询出总数,用作分页
   Integer serviceCount = serviceServiceImpl.getServiceCount(service);
   request.setAttribute("count",serviceCount);//总数
   Integer countPage = serviceCount/10;
   if((serviceCount/10.0-serviceCount/10)>0){//有小数,总页数+1
    countPage = countPage+1;
   }
   request.setAttribute("countPage",countPage);//总页数

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
asp 取文本框名称代码
Dec 02 Javascript
我遇到的参数传递中 双引号单引号嵌套问题
Feb 11 Javascript
jQuery中filter()和find()的区别深入了解
Sep 25 Javascript
jquery bind(click)传参让列表中每行绑定一个事件
Aug 06 Javascript
基于jquery的手风琴图片展示效果实现方法
Dec 16 Javascript
基于jQuery实现多标签页切换的效果(web前端开发)
Jul 24 Javascript
详解jQuery中的事件
Dec 14 Javascript
在Angular中使用JWT认证方法示例
Sep 10 Javascript
jquery图片预览插件实现方法详解
Jul 18 jQuery
解决layui表格内文本超出隐藏的问题
Sep 12 Javascript
Object.keys() 和 Object.getOwnPropertyNames() 的区别详解
May 21 Javascript
在Vue中使用Viser说明(基于AntV-G2可视化引擎)
Oct 28 Javascript
基于Vue的文字跑马灯组件(npm 组件包)
May 24 #Javascript
React简单介绍
May 24 #Javascript
bootstrap3使用bootstrap datetimepicker日期插件
May 24 #Javascript
微信小程序本地缓存数据增删改查实例详解
May 24 #Javascript
详解微信小程序 通过控制CSS实现view隐藏与显示
May 24 #Javascript
jquery Form轻松实现文件上传
May 24 #jQuery
微信小程序封装http访问网络库实例代码
May 24 #Javascript
You might like
MySQL数据源表结构图示
2008/06/05 PHP
php 数组的指针操作实现代码
2011/02/08 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
2016/01/07 PHP
PHP环境搭建的详细步骤
2016/06/30 PHP
JQuery扩展插件Validate—6 radio、checkbox、select的验证
2011/09/05 Javascript
Jquery和JS用外部变量获取Ajax返回的参数值的方法实例(超简单)
2013/06/17 Javascript
js 获取页面高度和宽度兼容 ie firefox chrome等
2014/05/14 Javascript
基于Bootstrap+jQuery.validate实现Form表单验证
2014/12/16 Javascript
node.js中的fs.closeSync方法使用说明
2014/12/17 Javascript
基于javascript html5实现多文件上传
2016/03/03 Javascript
D3.js封装文本实现自动换行和旋转平移等功能
2016/10/14 Javascript
jQuery模拟淘宝购物车功能
2017/02/27 Javascript
js获取ip和地区
2017/03/10 Javascript
移动端web滚动分页的实现方法
2017/05/05 Javascript
vue引入jq插件的实例讲解
2017/09/12 Javascript
jquery实现侧边栏左右伸缩效果的示例
2017/12/19 jQuery
微信小程序实现收藏与取消收藏切换图片功能
2018/08/03 Javascript
vue实现父子组件之间的通信以及兄弟组件的通信功能示例
2019/01/29 Javascript
详解Vue前端生产环境发布配置实战篇
2019/05/07 Javascript
node使用request请求的方法
2019/12/20 Javascript
原生js拖拽功能制作滑动条实例代码
2021/02/05 Javascript
[08:47]DOTA2每周TOP10 精彩击杀集锦vol.6
2014/06/25 DOTA
python 输出一个两行字符的变量
2009/02/05 Python
Python语言的面相对象编程方式初步学习
2016/03/12 Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
2018/12/14 Python
解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了
2020/04/07 Python
Clarks鞋美国官网:全球领军鞋履品牌
2017/05/13 全球购物
vue实现倒计时功能
2021/03/24 Vue.js
大学校庆邀请函
2014/01/11 职场文书
管理专员自荐信
2014/01/26 职场文书
学校安全管理责任书
2014/07/23 职场文书
幸福中国演讲稿
2014/09/12 职场文书
2014年留守儿童工作总结
2014/12/10 职场文书
MySQL连接查询你真的学会了吗?
2021/06/02 MySQL
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸
Python 匹配文本并在其上一行追加文本
2022/05/11 Python