首页 > 语言 > JavaScript > 正文

JavaScript分页功能的实现方法

2024-05-06 16:18:47
字体:
来源:转载
供稿:网友

这篇文章主要介绍了JavaScript分页功能的实现方法,涉及javascript操作分页的相关技巧,需要的朋友可以参考下

本文实例讲述了JavaScript分页功能的实现方法。分享给大家供大家参考。具体实现方法如下:

  1. <script> 
  2. //定义page为全局变量,以便下面使用 
  3. var page; 
  4. window.onload = function() { 
  5. var table = document.getElementById("table"); 
  6. var btnAdd = document.getElementById("btnAdd"); 
  7. var btnModify = document.getElementById("btnModify"); 
  8. var btnDel = document.getElementById("btnDel"); 
  9. var btnRefresh = document.getElementById("btnRefresh"); 
  10. var headCheck = document.getElementById("headCheck"); 
  11. //定义每页的页数及初始化table和tbody的id 
  12. page = new Page(5, 'table''sTBodyId'); 
  13. //初始加载init方法 
  14. page.__init__(); 
  15. //初始更新表格 
  16. page.__updateTableRows__(); 
  17. //下面的所有方法,均写到window.onload之外,否则运行有问题 
  18. function Page(iAbsolute, sTableId, sTBodyId) { 
  19. //每页显示数据的条数 
  20. this.absolute = iAbsolute;  
  21. this.tableId = sTableId; 
  22. this.tBodyId = sTBodyId; 
  23. this.rowCount = 0;//记录数 
  24. this.pageCount = 0;//页数 
  25. this.pageIndex = 0;//页索引 
  26. this.__oTable__ = null;//表格引用 
  27. this.__oTBody__ = null;//要分页内容 
  28. this.__dataRows__ = 0;//记录行引用 
  29. this.__oldTBody__ = null
  30. //初始化 
  31. Page.prototype.__init__ = function() { 
  32. //获取table引用 
  33. this.__oTable__ = document.getElementById(this.tableId); 
  34. //获取tBody引用 
  35. this.__oTBody__ = this.__oTable__.tBodies[this.tBodyId]; 
  36. //获取tbody的行 
  37. this.__dataRows__ = this.__oTBody__.rows; 
  38. //获取tbody的总行数 
  39. this.rowCount = this.__dataRows__.length; 
  40. try { 
  41. //判断初始化时每页显示的数据条数,如果定义的值<0或者定义的值>本来就有的行数,那么初始化时显示本来的行数,否则为当前定义的行数 
  42. this.absolute = (this.absolute <= 0) 
  43. || (this.absolute > this.rowCount) ? this.rowCount 
  44. this.absolute; 
  45. //定义初始化时该显示几页数据,也就是总页数 
  46. this.pageCount = parseInt(this.rowCount % this.absolute == 0 ? this.rowCount 
  47. this.absolute 
  48. this.rowCount / this.absolute + 1); 
  49. catch (exception) { 
  50. //下一页 
  51. Page.prototype.nextPage = function() { 
  52.  
  53. if (this.pageIndex + 1 < this.pageCount) { 
  54. this.pageIndex += 1; 
  55. this.__updateTableRows__(); 
  56. //上一页 
  57. Page.prototype.prePage = function() { 
  58. if (this.pageIndex >= 1) { 
  59. this.pageIndex -= 1; 
  60. this.__updateTableRows__(); 
  61. //首页 
  62. Page.prototype.firstPage = function() { 
  63. if (this.pageIndex != 0) { 
  64. this.pageIndex = 0; 
  65. this.__updateTableRows__(); 
  66.  
  67. //尾页 
  68. Page.prototype.lastPage = function() { 
  69. if (this.pageIndex + 1 != this.pageCount) { 
  70. this.pageIndex = this.pageCount - 1; 
  71. this.__updateTableRows__(); 
  72. //页定位方法 
  73. Page.prototype.aimPage = function(iPageIndex) { 
  74. if (iPageIndex > this.pageCount - 1) { 
  75. this.pageIndex = this.pageCount - 1; 
  76. else if (iPageIndex < 0) { 
  77. this.pageIndex = 0; 
  78. else { 
  79. this.pageIndex = iPageIndex; 
  80. this.__updateTableRows__(); 
  81. //执行分页时,更新显示表格内容 
  82. Page.prototype.__updateTableRows__ = function() { 
  83. //pageIndex初始化时为0 
  84. //每页显示的数据*当前页的索引 
  85. var iCurrentRowCount = this.absolute * this.pageIndex; 
  86. //如果截止到当前页的所有数据+每页显示的数据>总数据条数,则还需要显示this.absolute+ iCurrentRowCount - this.rowCount这些数据,否则,显示0条数据 
  87. var iMoreRow = this.absolute + iCurrentRowCount > this.rowCount ? this.absolute 
  88. + iCurrentRowCount - this.rowCount 
  89. : 0; 
  90. var tempRows = this.__cloneRows__(); 
  91. //alert(tempRows === this.dataRows); 
  92. //alert(this.dataRows.length); 
  93. //将tbody从table中移除 
  94. var removedTBody = this.__oTable__.removeChild(this.__oTBody__); 
  95. //重新创建tbody 
  96. var newTBody = document.createElement("TBODY"); 
  97. //给他赋一个id值,为原来的id值 
  98. newTBody.setAttribute("id"this.tBodyId); 
  99. for (var i = iCurrentRowCount; i < this.absolute + iCurrentRowCount 
  100. - iMoreRow; i++) { 
  101. //重新给body添加节点 
  102. newTBody.appendChild(tempRows[i]); 
  103. //将新创建的tbody加到table中 
  104. this.__oTable__.appendChild(newTBody); 
  105. /* 
  106. this.dataRows为this.oTBody的一个引用, 
  107. 移除this.oTBody那么this.dataRows引用将销失, 
  108. code:this.dataRows = tempRows;恢复原始操作行集合. 
  109. */ 
  110. this.__dataRows__ = tempRows; 
  111. this.__oTBody__ = newTBody; 
  112. //克隆原始操作行集合 
  113. Page.prototype.__cloneRows__ = function() { 
  114. var tempRows = []; 
  115. //将当前body中的所有节点及其子节点都克隆一遍 
  116. for (var i = 0; i < this.__dataRows__.length; i++) { 
  117. tempRows[i] = this.__dataRows__[i].cloneNode(1); 
  118. return tempRows; 
  119. </script> 
  120. </head> 
  121. <body> 
  122. <!-- 这里有一个表格,内容随意,供分页使用 --> 
  123. <table width="100%" cellpadding="0" cellspacing="0" border="1" 
  124. style="padding: 2"
  125. <tr> 
  126. <td colspan="3" align="center">总共:<%=connDataList.size()%>条记录每页显示5条 
  127. <a href="javascript:void(0);" 
  128. onclick="page.firstPage();return false;">首页</a> <a 
  129. href="javascript:void(0);" onclick="page.prePage();return false;">上一页</a> 
  130. <a href="javascript:void(0);" 
  131. onclick="page.nextPage();return false;">下一页</a> <a 
  132. href="javascript:void(0);" onclick="page.lastPage();return false;">尾页</a> 
  133. <span id="pageindex"></span> 
  134. </td> 
  135. </tr> 
  136. </table> 
  137. </body> 
  138. </html> 



希望本文所述对大家的javascript程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选