js实现分页的几个源码,看完基本就懂了

第一种:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>addUser.html</title>

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="this is my page">

<meta http-equiv="content-type" content="text/html; charset=UTF-8">

<script type="text/javascript" src="../js/wpCalendar.js">

</script>

</head>

<body>

<div align="center">

<h1>

显示有的用户界面

</h1>

<div

style="border: 1px red solid; margin-bottom: 100px; padding: 10px 10%">

<table border="1px" cellpadding="0" cellspacing="0" id="tusers">

<thead>

<tr>

<th>

<input type="checkbox" name="chbk" id="chbk1" />

</th>

<th>

名称

</th>

<th>

性别

</th>

<th>

邮箱

</th>

<th>

出生日期

</th>

<th>

操作

</th>

</tr>

</thead>

<tbody id="users">

</tbody>

</table>

<div id="pages">

</div>

</div>

<div style="border: 1px blue solid;">

<form>

<table id="divs">

<tbody id="addUsers">

<tr>

<td>

用户名:

</td>

<td>

<input type="text" name="name" id="name" />

</td>

</tr>

<tr>

<td>

性别:

</td>

<td>

<select id="sex">

<option value="男">

</option>

<option value="女">

</option>

</select>

</td>

</tr>

<tr>

<td>

邮箱:

</td>

<td>

<input type="text" name="email" id="email" />

</td>

</tr>

<tr>

<td>

出生日期:

</td>

<td>

<input type="text" id="bir" name="bir" />

<input type=button value="点击看我"

onclick="showCalendar(this,document.all.bir)">

</td>

</tr>

<tr id="addu">

<td colspan="2">

<input type="button" value="添加" onclick="addUser()" id="add" />

</td>

</tr>

<tr id="addu1">

<td colspan="2">

<input type="button" value="修改" id="upduser" />

</td>

</tr>

</tbody>

</table>

</form>

</div>

</div>

</body>

</html>

<script>

window.onload = function() {

document.getElementByIdx_x("addu1").style.display = "none";

}

function addUser() {

var name = document.getElementByIdx_x("name").value;

var sex = document.getElementByIdx_x("sex").value;

var email = document.getElementByIdx_x("email").value;

var bir = document.getElementByIdx_x("bir").value;

//获取表格节点对象

var tusers = document.getElementByIdx_x("tusers");

//创建行

var tr1 = document.createElement_x("tr");

var cbk = document.createElement_x("td");

var tname = document.createElement_x("td");

var tsex = document.createElement_x("td");

var temail = document.createElement_x("td");

var tbir = document.createElement_x("td");

var toper = document.createElement_x("td");

var cbk1 = document.createElement_x("input");

cbk1.setAttribute("type", "checkbox");

cbk1.setAttribute("name", "chbk");

cbk.appendChild(cbk1);

tname.appendChild(document.createTextNode(name));

tsex.appendChild(document.createTextNode(sex));

temail.appendChild(document.createTextNode(email));

tbir.appendChild(document.createTextNode(bir));

var adelete = document.createElement_x("a");

var aupdate = document.createElement_x("a");

adelete.setAttribute("href", "#");

aupdate.setAttribute("href", "#");

adelete.appendChild(document.createTextNode("删除 |"));

aupdate.appendChild(document.createTextNode("修改"));

toper.appendChild(adelete);

toper.appendChild(aupdate)

//往行中添加

tr1.appendChild(cbk);

tr1.appendChild(tname);

tr1.appendChild(tsex);

tr1.appendChild(temail);

tr1.appendChild(tbir);

tr1.appendChild(toper);

var users = document.getElementByIdx_x("users");

users.appendChild(tr1);

tusers.appendChild(users);

//删除操作

adelete.onclick = function() {

users.removeChild(adelete.parentNode.parentNode);

}

//修改操作

aupdate.onclick = function() {

document.getElementByIdx_x("addu").style.display = "none";

document.getElementByIdx_x("addu1").style.display = "block";

var utr = aupdate.parentNode.parentNode;

var utrs = utr.childNodes;

document.getElementByIdx_x("name").value = utrs[1].innerHTML;

document.getElementByIdx_x("sex").value = utrs[2].innerHTML;

document.getElementByIdx_x("email").value = utrs[3].innerHTML;

document.getElementByIdx_x("bir").value = utrs[4].innerHTML;

var upUser = document.getElementByIdx_x("upduser");

upUser.onclick = function() {

utr.childNodes[1].innerHTML = document.getElementByIdx_x("name").value;

utr.childNodes[2].innerHTML = document.getElementByIdx_x("sex").value;

utr.childNodes[3].innerHTML = document.getElementByIdx_x("email").value

utr.childNodes[4].innerHTML = document.getElementByIdx_x("bir").value

document.getElementByIdx_x("addu1").style.display = "none";

document.getElementByIdx_x("addu").style.display = "block";

}

}

//当添加用户的时候调用分页技术

testPage()

}

//定义分页标签节点对象并创建

var indexPage = document.createElement_x("a");

var upPage = document.createElement_x("a");

var downPage = document.createElement_x("a");

var endPage = document.createElement_x("a");

var nowpage = 1;

//分页技术的实现

function testPage() {

var tbodyUsers = document.getElementByIdx_x("users");

var trUsers = tbodyUsers.getElementsByTagName_r("tr");

//获取总记录数

var countRecord = trUsers.length;

//每页显示的记录数

var PAGESIZE = 2;

//总页数

var countPage = (countRecord % PAGESIZE == 0 ? countRecord / PAGESIZE

: Math.ceil(countRecord / PAGESIZE));

//当前页信息

// =======>从那条记录开始 (nowpage-1)*PAGESIZE;

//var nowpage = countPage;

//获取创建分页标签的节点对象

var pages = document.getElementByIdx_x("pages");

//如果没有创建分页标签的节点则创建节点对象

if (!pages.hasChildNodes()) {

getPages(nowpage);

}

//当点击首页时的操作

indexPage.onclick = function() {

nowpage = 1;

//显示首页的记录

indexPageInfo(countRecord, trUsers);

}

//当点击上一页的操作

upPage.onclick = function() {

if (nowpage - 1 > 1) {

nowpage -= 1;

} else {

nowpage = 1;

indexPageInfo(countRecord, trUsers);

}

//显示上一页记录

var startindex = (nowpage - 1) * PAGESIZE;

alert(startindex + "====================++++++");

var endindex = startindex + PAGESIZE;

PageInfo(startindex, endindex, countRecord, trUsers)

}

//当点击下一页的操作

downPage.onclick = function() {

if (nowpage + 1 >= countPage) {

nowpage = countPage;

} else {

nowpage += 1;

}

alert(nowpage + "-----------------");

//显示上一页记录

var startindex = (nowpage - 1) * PAGESIZE;

alert(startindex + "====================++++++");

var endindex = startindex + PAGESIZE;

alert(startindex + "-----" + endindex + "---");

PageInfo(startindex, endindex, countRecord, trUsers)

}

//当点击最后一页的操作

endPage.onclick = function() {

nowpage = countPage;

if (nowpage > 1) {

var startindex = (nowpage-1)*PAGESIZE;

for ( var i = 0; i < countRecord; i++) {

if (i < startindex) {

trUsers[i].style.display = "none";

} else {

trUsers[i].style.display = "block";

}

}

第二种:

<script language="JavaScript">

var totalRecordNum = <%=totalRecordNum%>;//总记录条数(从java程序中获取)

var currentPageNumber = 1;//当前页号

if(totalRecordNum==0)

{

currentPageNumber = 0;

}

var perPageRecordNum = 5;//每页记录条数(js中设置)

//计算总页数

var totalPageNumber = Math.ceil(totalRecordNum/perPageRecordNum);

var startShowPage ;//开始显示页记录号数

var endShowPage ;//结束显示页记录号数

//回车键和点击"GO"图片的效果一样

function keyDown() {

if(event.keyCode == 13){

goToPage();

}

}

//跳到指定页

function goToPage()

{

if(totalRecordNum != 0)

{

var pageNo = document.BillQueryForm.pageNum.value;

//校验页号

if((/[^0-9]/gi.test(pageNo)) | pageNo.length==0)

{

alert("页数必须为数字!");

return;

}

else

{

if((pageNo > totalPageNumber)|(pageNo<1))

{

alert("你所输入的页数超出范围!");

return;

}

}

//跳转到指定页

startShowPage = (pageNo-1)*perPageRecordNum;

endShowPage  = pageNo*perPageRecordNum;

exeShowPage();

currentPageNumber = pageNo;

curPageNo.innerHTML = currentPageNumber;

totalPageNo.innerHTML = totalPageNumber;

}

}

//跳转到第一页

function goToFirstPage()

{

if(totalRecordNum != 0)

{

startShowPage = 0*perPageRecordNum;

endShowPage  = 1*perPageRecordNum;

currentPageNumber = 1;

exeShowPage();

curPageNo.innerHTML = currentPageNumber;

totalPageNo.innerHTML = totalPageNumber;

}

}

function goToLastPage()

{

if(totalRecordNum != 0)

{

if(totalRecordNum%perPageRecordNum==0)//除尽

{

var tempVal = totalRecordNum/perPageRecordNum;

startShowPage = (tempVal-1)*perPageRecordNum;

endShowPage  = tempVal*perPageRecordNum;

}

else

{

var tempVal = totalRecordNum%perPageRecordNum;//得到余数,就是最后一页要显示的记录条数

startShowPage = totalRecordNum-tempVal;

endShowPage  = totalRecordNum;

}

currentPageNumber=totalPageNumber;

exeShowPage();

curPageNo.innerHTML = currentPageNumber;

totalPageNo.innerHTML = totalPageNumber;

}

}

function goToNextPage()

{

if(totalRecordNum != 0)

{

if(currentPageNumber< totalPageNumber)

{

currentPageNumber = Number(currentPageNumber)+1;

startShowPage = (currentPageNumber-1)*perPageRecordNum;

endShowPage  = currentPageNumber*perPageRecordNum;

exeShowPage();

curPageNo.innerHTML = currentPageNumber;

totalPageNo.innerHTML = totalPageNumber;

}

else

{

alert("当前页已经是最后一页了!");

}

}

}

function goToBeforePage()

{

if(totalRecordNum != 0)

{

if(currentPageNumber>1)

{

currentPageNumber = currentPageNumber-1;

startShowPage = (currentPageNumber-1)*perPageRecordNum;

endShowPage  = currentPageNumber*perPageRecordNum;

exeShowPage();

curPageNo.innerHTML = currentPageNumber;

totalPageNo.innerHTML = totalPageNumber;

}

else

{

alert("当前页已经是第一页了!");

}

}

}

function exeShowPage()

{

for(var i = 0; i<totalRecordNum;i++)

{

if ((i>=startShowPage)&&(i<endShowPage))

{

document.getElementByIdx_x("row"+i).style.display="";

}

else

{

document.getElementByIdx_x("row"+i).style.display="none";

}

}

}

function submitQuery()

{

var sForm = document.JXCardNumQueryForm;

if(sForm.elements["jxCardVO.jxcardid"].value==""){

alert("请输入您要查询的卡号!");

sForm.elements["jxCardVO.jxcardid"].focus();

return 0;

}

if(sForm.elements["jxCardVO.password"].value==""){

alert("请输入您要查询的密码!");

sForm.elements["jxCardVO.password"].focus();

return 0;

}

sForm.action="jxCardNumQuery.do?type=dxk";

sForm.submit();

return;

}

function cancelQuery()

{

window.history.go(-1);

}

function check()

{

if(document.all("card_no").value==""){

alert("卡号不能为空,请输入卡号!");

document.all("card_no").focus();

return false;

}

if(document.all("password").value==""){

alert("密码不能为空!");

document.all("password").focus();

return false;

}

return true;

}

//-->

</script>

<body onLoad="javascript:goToFirstPage();">

<%if(totalRecordNum!=0) {%>

<tr>

<td colspan=‘4‘ align="right">

当前第<span id="curPageNo"></span>页/总计<span id="totalPageNo"></span>页&nbsp;&nbsp;

<a onClick="javascript:goToFirstPage();" style="cursor:hand;"><img src="images/page_top.gif" width="9" height="9" border="0">第一页</a>

&nbsp;&nbsp;

<a onClick="javascript:goToBeforePage();" style="cursor:hand;"><img src="images/page_prev.gif" width="9" height="9" border="0">上一页</a>

&nbsp;&nbsp;

<a onClick="javascript:goToNextPage();" style="cursor:hand;">下一页<img src="images/page_next.gif" width="9" height="9"></a>

&nbsp;&nbsp;

<a onClick="javascript:goToLastPage();" style="cursor:hand;">最后一页<img src="images/page_end.gif" width="9" height="9" border="0"></a>

&nbsp;&nbsp;

<input type="text" id="pageNum" name="pageNum" size="5"  onkeydown="javascript:keyDown();">

<input type="button" class="orangebtn_s" value="Go!" onclick="javascript:goToPage();" />

</td>

</tr>

<%}

else{%>

<tr>

<td colspan=‘4‘ align="right">

<span id="curPageNo"></span>

<span id="totalPageNo"></span>

</td>

</tr>

<%}%>

</logic:present>

</table>

</td>

</tr>

</table>

</html:form>

时间: 2024-10-24 19:14:25

js实现分页的几个源码,看完基本就懂了的相关文章

Mybatis+SpringMVC实现分页查询(附源码)

Maven+Mybatis+Spring+SpringMVC实现分页查询(附源码) 一.项目搭建 关于项目搭建,小宝鸽以前写过一篇Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建,这篇文章提供了详细的搭建过程,而且提供了源码下载,接下来的将在这个源码的基础上继续开发.所以建议各位猿友可以把猿友下载一下. 二.分页插件的介绍 博主采用的插件是PageHelper这个插件,使用起来十分方便.该插件支持以下数据库: Oracle Mysql MariaDB SQLite

从Chrome源码看浏览器的事件机制

.aligncenter { clear: both; display: block; margin-left: auto; margin-right: auto } .crayon-line span::after { content: " " } p { font-size: 15px; text-indent: 2em } #colorbox.crayon-colorbox,#cboxOverlay.crayon-colorbox,.crayon-colorbox #cboxWr

从源码看Android中sqlite是怎么读DB的

执行query 执行SQLiteDatabase类中query系列函数时,只会构造查询信息,不会执行查询. (query的源码追踪路径) 执行move(里面的fillwindow是真正打开文件句柄并分配内存的地方) 当执行Cursor的move系列函数时,第一次执行,会为查询结果集创建一块共享内存,即cursorwindow moveToPosition源码路径 fillWindow----真正耗时的地方 然后会执行sql语句,向共享内存中填入数据, fillWindow源码路径 在SQLite

【从源码看Android】02MessageQueue的epoll原型

1 开头 上一讲讲到Looper,大家对Looper有了大概的了结(好几个月过去了-) 大家都知道一个Handler对应有一个MessageQueue, 在哪个线程上new Handler(如果不指定looper对象),那么这个handler就默认对应于这个线程上的prepare过的Looper 如下图Handler.java代码所示,mLooper由Looper.myLooper()指定, public Handler(Callback callback, boolean async) { i

从源码看Azkaban作业流下发过程——记我的第一次白盒测试

一.Azkaban简介 Azkaban作为开源的调度系统,在大数据中有广泛地使用.它主要有三部分组成:Azkaban Webserver.Azkaban Executor. DB. 图1 Azkaban架构 图1所示的是Azkaban的基本架构:Webserver主要负责权限验证.项目管理.作业流下发等工作:Executor主要负责作业流/作业的具体执行以及搜集执行日志等工作:MySQL用于存储作业/作业流的执行状态信息.图中所示的是单executor场景,但是实际应用中大部分的项目使用的都是多

nginx源码分析--从源码看nginx框架总结

nginx源码总结: 1)代码中没有特别绕特别别扭的编码实现,从变量的定义调用函数的实现封装,都非常恰当,比如从函数命名或者变量命名就可以看出来定义的大体意义,函数的基本功能,再好的架构实现在编码习惯差的人实现也会黯然失色,如果透彻理解代码的实现,领悟架构的设计初衷,觉得每块代码就想经过耐心雕琢一样,不仅仅实现了基本的功能给你,为其他人阅读也会提供很好的支持.细致恰当的命名规则就可以看出作者的功力. 2)更好更高的软件性能体现在架构设计上,好的架构会让软件更加稳定.容易维护.便于扩展.从核心模块

解密随机数生成器(二)——从java源码看线性同余算法

Random Java中的Random类生成的是伪随机数,使用的是48-bit的种子,然后调用一个linear congruential formula线性同余方程(Donald Knuth的编程艺术的3.2.1节) 如果两个Random实例使用相同的种子,并且调用同样的函数,那么生成的sequence是相同的 也可以调用Math.random()生成随机数 Random实例是线程安全的,但是并发使用Random实例会影响效率,可以考虑使用ThreadLocalRandom变量. Random实

从源码看Android中sqlite是怎么读DB的(转)

执行query 执行SQLiteDatabase类中query系列函数时,只会构造查询信息,不会执行查询. (query的源码追踪路径) 执行move(里面的fillwindow是真正打开文件句柄并分配内存的地方) 当执行Cursor的move系列函数时,第一次执行,会为查询结果集创建一块共享内存,即cursorwindow moveToPosition源码路径 fillWindow----真正耗时的地方 然后会执行sql语句,向共享内存中填入数据, fillWindow源码路径 在SQLite

【从源码看Android】03Android MessageQueue消息循环处理机制(epoll实现)

1 enqueueMessage handler发送一条消息 mHandler.sendEmptyMessage(1); 经过层层调用,进入到sendMessageAtTime函数块,最后调用到enqueueMessage Handler.java public boolean sendMessageAtTime(Message msg, long uptimeMillis) { MessageQueue queue = mQueue; if (queue == null) { RuntimeE