方法一
一: 先看效果图
二:主要功能:
上一页,下一页,跳转,尾页,
三: 代码
index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
#box div{
float: left; margin: 10px;
-moz-user-select: none; /*火狐*/
-webkit-user-select: none; /*webkit浏览器*/
-ms-user-select: none; /*IE10*/
-khtml-user-select: none; /*早期浏览器*/
user-select: none;
}
#box::after{
content:''; overflow: hidden; clear:both;height: 0; display: block; zoom: 1;
}
#box .jump input{ width: 30px; margin-right: 10px;}
#box .pages span{
display: inline-block;
cursor: pointer;
width: 20px;
height: 20px;
border: 1px solid balck;
margin: 0 5px;
border: 1px solid black;
text-align: center;
}
.firstpage,.lastpage,.prepage,.nextpage,.btn{cursor: pointer;}
</style>
</head>
<body>
<div id="box">
<div class="firstpage">首页</div><div class="prepage">上一页</div><div class="pages"></div>
<div class="nextpage">下一页</div><div class="lastpage">尾页</div><div class="jump"><input type="text"><button class="btn">跳转</button></div>
</div>
<script src="./jquery.min.js"></script>
<script src="./page.js"></script>
</body>
</html>
js:
var page = {
init: function(){
this.goPage(7,4,5,200)
},
/**
*
* @param {当前页} cur
* @param {一页显示的数量} onepage
* @param {页码显示范围} range
* @param {数据总量} total
*/
goPage:function(cur,onepage,range,total){
var dest= $('.pages');
var _this=this;
var totalPage = Math.ceil(total/onepage); //总页码数
var tempStr='';
var currentPage = cur;
//根据页码范围控制页码显示
tempStr = _this.createTemplete(totalPage,range,currentPage);
dest.html();
dest.html(tempStr);
$("#box span:contains("+currentPage+")").css({'background':'red'}).siblings().css({'background':'none'})
//上一页事件
$('.prepage').on('click',function(){
if(currentPage>1){
currentPage-=1;
tempStr = _this.createTemplete(totalPage,range,currentPage);
dest.html();
dest.html(tempStr);
$("#box span:contains("+currentPage+")").css({'background':'red'}).siblings().css({'background':'none'})
}
});
//下一页事件
$('.nextpage').on('click',function(){
currentPage+=1
if(currentPage<totalPage){
tempStr = _this.createTemplete(totalPage,range,currentPage);
dest.html();
dest.html(tempStr);
$("#box span:contains("+currentPage+")").css({'background':'red'}).siblings().css({'background':'none'})
}else{
return false
}
});
//首页
$('.firstpage').on('click',function(){
currentPage=1;
_this.goPage(1,onepage,range,total)
$("#box span:contains("+currentPage+")").css({'background':'red'}).siblings().css({'background':'none'})
})
//尾页
$('.lastpage').on('click',function(){
currentPage=totalPage;
_this.goPage(totalPage,onepage,range,total)
$("#box span:contains("+currentPage+")").css({'background':'red'}).siblings().css({'background':'none'})
})
//跳转
$('.btn').on('click',function(){
currentPage = parseInt($('#box input').val());
console.log(currentPage)
tempStr = _this.createTemplete(totalPage,range,currentPage);
dest.html();
dest.html(tempStr);
$("#box span:contains("+currentPage+")").css({'background':'red'}).siblings().css({'background':'none'})
})
//页码
$('.pages').on('click','span',function(){
currentPage=parseInt($(this).text())
console.log(this)
tempStr = _this.createTemplete(totalPage,range,currentPage);
dest.html();
dest.html(tempStr);
$("#box span:contains("+currentPage+")").css({'background':'red'}).siblings().css({'background':'none'})
})
},
createTemplete: function(total,range,currentPage){
var tempStr='';
if(total<=range){
for(var pageIndex= 1;pageIndex<total+1;pageIndex++){
tempStr+="<span>"+pageIndex+"</span>";
}
}else{
if(currentPage>=total-range){
var startPage = total-range;
for(var i=startPage; i<=total;i++){
tempStr+="<span>"+i+"</span>"
}
}else{
var startPage=currentPage;
for(var i =startPage;i<=startPage+range;i++){
tempStr += "<span>"+i+"</span>"
}
}
}
return tempStr;
},
}
$(function(){
page.init();
})
总结:函数还可以进一步优化,所有的按钮都是事先写好的,还可以用一下方式来做分页。
方法二:
说明: 第二种参考了网上的代码 参考地址,增加了页码显示范围,该方法按钮是动态生成的。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<table id="idData" width="70%">
<tr><td>user1</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
<tr><td>user2</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
<tr><td>user3</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
<tr><td>user4</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
<tr><td>user5</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
<tr><td>user6</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
<tr><td>user7</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
<tr><td>user8</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
<tr><td>user9</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
<tr><td>user10</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
<tr><td>user11</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
<tr><td>user12</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
<tr><td>user13</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
<tr><td>user14</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
<tr><td>user15</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
<tr><td>user16</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
<tr><td>user17</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
<tr><td>user18</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
<tr><td>user19</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
<tr><td>user20</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
<tr><td>user21</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
<tr><td>user22</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
<tr><td>user23</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
<tr><td>user24</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
<tr><td>user25</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
<tr><td>user26</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
<tr><td>user27</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
<tr><td>user28</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
<tr><td>user29</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
<tr><td>user30</td><td>25</td><td>男</td><td>山西吕梁</td></tr>
</table>
<table width="60%" align="right">
<tr><td><div id="barcon" name="barcon"></div></td></tr>
</table>
<script src="./jquery.min.js"></script>
<script>
function goPage(pno){
var itable = document.getElementById("idData");
var num = itable.rows.length;//表格所有行数(所有记录数)
var totalPage = 0;//总页数
var pageSize = 4;//每页显示行数
var range=20; //页码显示范围
//总共分几页
if(num/pageSize > parseInt(num/pageSize)){
totalPage=parseInt(num/pageSize)+1;
}else{
totalPage=parseInt(num/pageSize);
}
var currentPage = pno;//当前页数
var startRow = (currentPage - 1) * pageSize+1;//开始显示的行 31
var endRow = currentPage * pageSize;//结束显示的行 40
endRow = (endRow > num)? num : endRow; //40
//遍历显示数据实现分页
for(var i=1;i<(num+1);i++){
var irow = itable.rows[i-1];
if(i>=startRow && i<=endRow){
irow.style.display = "table-row";
}else{
irow.style.display = "none";
}
}
var tempStr = "<span>共"+totalPage+"页</span>";
if(currentPage>1){
tempStr += "<span class='btn' href=\"#\" onClick=\"goPage("+(1)+")\">首页</span>";
tempStr += "<span class='btn' href=\"#\" onClick=\"goPage("+(currentPage-1)+")\">上一页</span>"
}else{
tempStr += "<span class='btn'>首页</span>";
tempStr += "<span class='btn'>上一页</span>";
}
//根据页码范围来动态控制页码
if(totalPage<=range){
for(var pageIndex= 1;pageIndex<totalPage+1;pageIndex++){
tempStr += "<a onclick=\"goPage("+pageIndex+")\"><span>"+ pageIndex +"</span></a>";
}
}else{
if(currentPage>=totalPage-range){
var startPage = totalPage-range;
for(var i=startPage; i<=totalPage;i++){
tempStr += "<a onclick=\"goPage("+i+")\"><span>"+ i +"</span></a>";
}
}else{
var startPage=currentPage;
for(var i =startPage;i<=startPage+range;i++){
tempStr += "<a onclick=\"goPage("+i+")\"><span>"+ i +"</span></a>";
}
}
}
if(currentPage<totalPage){
tempStr += "<span class='btn' href=\"#\" onClick=\"goPage("+(currentPage+1)+")\">下一页</span>";
tempStr += "<span class='btn' href=\"#\" onClick=\"goPage("+(totalPage)+")\">尾页</span>";
}else{
tempStr += "<span class='btn'>下一页</span>";
tempStr += "<span class='btn'>尾页</span>";
}
document.getElementById("barcon").innerHTML = tempStr;
}
goPage(1);
</script>
</body>
</html>