做项目时偶尔有需求:数据一次性加载到页面同时还要实现分页,此时有两种方式一种是提交到当前页,这个里面会有一些变量需要置为hidden域,另外一种就是纯js分页。利用第一种方式效率不太高,存在多次访问数据库的问题,因而对于这种需要常常采用第二种方式。demo如下,实现思路:页面数据一次性全部加载完毕,js部分通过函数控制其是否显示达到分页的功能,有一个方法通过递归即可全部实现上一页、下一页、首页、尾页的功能,同时页面显示的分页点击部分也是由js内部innerHTML写入
1、js部分(单独保存为page.js)--js中的加减参数需要根据实际情形决定,即table第一行开始到真正的数据行之间有几行,则加减参数就是几
/**
* 分页函数
* pno--页数
* psize--每页显示记录数
* 分页部分是从真实数据行开始,因而存在加减某个常数,以确定真正的记录数
* 纯js分页实质是数据行全部加载,通过是否显示属性完成分页功能
**/
function goPage(pno,psize){
var itable = document.getElementById("idData");
var num = itable.rows.length;//表格行数
var totalPage = 0;//总页数
var pageSize = psize;//每页显示行数
if((num-1)/pageSize > parseInt((num-1)/pageSize)){
totalPage=parseInt((num-1)/pageSize)+1;
}else{
totalPage=parseInt((num-1)/pageSize);
}
var currentPage = pno;//当前页数
var startRow = (currentPage - 1) * pageSize+1;//开始显示的行
var endRow = currentPage * pageSize+1;//结束显示的行
endRow = (endRow > num)? num : endRow;
//前三行始终显示
for(i=0;i<1;i++){
var irow = itable.rows[i];
irow.style.display = "block";
}
for(var i=1;i<num;i++){
var irow = itable.rows[i];
if(i>=startRow&&i<endRow){
irow.style.display = "block";
}else{
irow.style.display = "none";
}
}
var pageEnd = document.getElementById("pageEnd");
var tempStr = "共"+(num-1)+"条记录 分"+totalPage+"页 当前第"+currentPage+"页";
if(currentPage>1){
tempStr += "<a href=\"#\" onClick=\"goPage("+(currentPage-1)+","+psize+")\">上一页</a>"
}else{
tempStr += "上一页";
}
if(currentPage<totalPage){
tempStr += "<a href=\"#\" onClick=\"goPage("+(currentPage+1)+","+psize+")\">下一页</a>";
}else{
tempStr += "下一页";
}
if(currentPage>1){
tempStr += "<a href=\"#\" onClick=\"goPage("+(1)+","+psize+")\">首页</a>";
}else{
tempStr += "首页";
}
if(currentPage<totalPage){
tempStr += "<a href=\"#\" onClick=\"goPage("+(totalPage)+","+psize+")\">尾页</a>";
}else{
tempStr += "尾页";
}
document.getElementById("barcon").innerHTML = tempStr;
}
2、html部分
<html>
<head>
<script type="text/javascript" src="page.js"></script>
</head>
<body onLoad="goPage(1,10);">
<table id="idData" width="70%">
<tr>
<td>姓名</td>
<td>年龄</td>
<td>性别</td>
<td>户籍</td>
</tr>
<tr>
<td>刘金钟</td>
<td>25</td>
<td>男</td>
<td>山西吕梁</td>
</tr>
<tr>
<td>liujinzhong1</td>
<td>25</td>
<td>男</td>
<td>山西吕梁</td>
</tr>
<tr>
<td>liujinzhong2</td>
<td>25</td>
<td>男</td>
<td>山西吕梁</td>
</tr>
<tr>
<td>liujinzhong3</td>
<td>25</td>
<td>男</td>
<td>山西吕梁</td>
</tr>
<tr>
<td>liujinzhong4</td>
<td>25</td>
<td>男</td>
<td>山西吕梁</td>
</tr>
<tr>
<td>liujinzhong5</td>
<td>25</td>
<td>男</td>
<td>山西吕梁</td>
</tr>
<tr>
<td>liujinzhong6</td>
<td>25</td>
<td>男</td>
<td>山西吕梁</td>
</tr>
<tr>
<td>liujinzhong7</td>
<td>25</td>
<td>男</td>
<td>山西吕梁</td>
</tr>
<tr>
<td>liujinzhong</td>
<td>25</td>
<td>男</td>
<td>山西吕梁</td>
</tr>
<tr>
<td>liujinzhong</td>
<td>25</td>
<td>男</td>
<td>山西吕梁</td>
</tr>
<tr>
<td>liujinzhong</td>
<td>25</td>
<td>男</td>
<td>山西吕梁</td>
</tr>
<tr>
<td>liujinzhong</td>
<td>25</td>
<td>男</td>
<td>山西吕梁</td>
</tr>
<tr>
<td>liujinzhong</td>
<td>25</td>
<td>男</td>
<td>山西吕梁</td>
</tr>
</table>
<table width="60%" align="right">
<tr>
<td>
<div id="barcon" name="barcon"></div>
</td>
</td>
</table>
</body>
</html>
直接运行就会看到效果。
分享到:
相关推荐
纯js分页,用js将内容以分页的形式展现出来,处理数据更简单
纯js分页模板
js分页,让你的数据跟快。不要再等待。这是一个简单的分页代码。
自制纯js分页工具,花了点时间自己写的,比pagination更纯净更微型
纯js实现分页模版页面,是参考别的网站的代码,供学习参考
纯手写JS分页,第一次做分页,不用任何控件,简单易懂,尝试分享出来。
此工具的目的是实现网页数据分页显示完全脱离服务器,单纯使用js实现,现在功能还比较简单,只能单纯显示数据,有其他需求可以联系探讨。 工具例子使用ajax获取列表数据,当然其他形式也行,最后应该把数据转换成...
纯JS表格分页代码 只适合静态数据,只是通过分页显示和隐藏数据所在行的效果
纯JS长文章分页代码纯JS长文章分页代码纯JS长文章分页代码纯JS长文章分页代码纯JS长文章分页代码纯JS长文章分页代码纯JS长文章分页代码
简单好用的分页插件原生JS,可跳转指定页, 可自定义样式
//1:根据字数自动分页 2:根据[NextPage]分页//默认页startpage = 1;//导航显示样式 0:常规 1:直接 3:下拉TopShowStyle = 1;DownShowStyle = 0; var currentSet,CutFlag,TotalByte,PageCount,key,tempText,tempPage...
基于JSF框架的纯js分页,代码精简明了
1.两个纯JS实现分页的例子源码 (真经典) 2.方便好用。 简单易懂。
一个纯JavaScript分页插件 任何人都可以免费使用、修改、发布 author:oospace email: 使用方法 1,代码前几行进参数配置 var Num=Number() //总条数(必填) var index = Number(); //当前页(必填) var pageNum=Number...
使用纯JavaScript实现表格分页显示,提供页面跳转功能,包括首页、上一页、下一页、尾页等功能。
经典 非常好用的纯JS分页处理。 有详细的使用方法,说明。 如有问题,请加群讨论:47755280
得用JavaScript面向对象编程,编写了一个分页通过控件。代码精简,功能强大.
使用js写的纯前端分页,可以加入数据,在本人的个人博客系统中有用到,欢迎大家研究分析
纯javaScript做的分页,有需要的可以看看,有源代码。