`

javascript分页

 
阅读更多

 


之前做无刷新分页一直用JQuery的pagination,但是发现他有一个很让人郁闷的问题,我们使用分页的时候,一般是把数据和数据总数同时查出来的,但是pagination非得要先拿到数据总数才肯干活,要是在查询条件不变的时候还可以应付,如果查询条件变化,我们就会遇到一个很尴尬的场面,本来一次查询就可以完成的事,现在非得分两步,先去查数据总数,然后再去查数据(不知道有没有办法解决,反正我没找到解决方法)。郁闷之下就自己写了一个,下面是代码:

 

1 var Pager = function() { 2 this.initialize.apply(this, arguments); 3 } 4 Pager.prototype = { 5 initialize: function(id, options) { 6 this.id = id;// 分页控件容器 7   this.index = 1;//当前页 8   this.pageCount = 0;//总页数 9 if (options) { 10 this.total = options.total || 0;//数据总数 11 this.pageSize = options.pageSize || 10;//分页大小 12 this.btnAmount = options.amount || 8;//显示的按钮个数 13 this.firstText = options.first || "|&lt;";// “第一页按钮”显示的文本 14 this.prevText = options.prev || "&lt;&lt;"//"上一页按钮"显示的文本 15 this.nextText = options.next || "&gt;&gt;";//“下一页按钮显示”的文本 16 this.lastText = options.last || "&gt;|";//"最后一页按钮"显示的文本 17 } else { 18 this.total = 0; 19 this.pageSize = 10; 20 this.btnAmount = 8; 21 this.firstText = "|&lt;"; 22 this.prevText = "&lt;&lt;" 23 this.nextText = "&gt;&gt;"; 24 this.lastText = "&gt;|"; 25 } 26 this.container = this.getObj(id); 27 }, 28 getObj: function(id) { 29 return "string" == typeof id ? document.getElementById(id) : id; 30 }, 31 // 当前页码改变时调用,这是你需要覆盖的方法 32 changeIndex: function(index) { 33 }, 34 reform: function(index) { 35 this.index = index; 36 this.changeIndex(index); 37 this.render(); 38 }, 39 calculate: function() { 40 this.pageCount = Math.ceil(this.total / this.pageSize); 41 this.index = this.index; 42 if (this.index > this.pageCount) { 43 this.index = this.pageCount; 44 } 45 }, 46 render: function() { 47 this.calculate(); 48 var start = Math.max(1, this.index - parseInt(this.btnAmount / 2)); 49 var end = Math.min(this.pageCount, start + this.btnAmount - 1); 50 start = Math.max(1, end - this.btnAmount + 1); 51 var html = ""; 52 html += "<div class=\"simple\">"; 53 if (this.pageCount >= 1) { 54 if (this.index != 1) { 55 html += "<a href='javascript:;' index='1'>" + this.firstText + "</a>"; 56 html += "<a href='javascript:;' index='" + (this.index - 1) + "'>" + this.prevText + "</a>"; 57 } else { 58 html += "<span>" + this.firstText + "</span>"; 59 html += "<span>" + this.prevText + "</span>"; 60 } 61 } 62 for (var i = start; i <= end; i++) { 63 if (i == this.index) { 64 html += "<span class='curr'>" + i + "</span>"; 65 } else { 66 html += "<a href='javascript:;' index='" + i + "'>" + i + "</a>"; 67 } 68 } 69 if (this.pageCount >= 1) { 70 if (this.index != this.pageCount) { 71 html += "<a href='javascript:;' index='" + (this.index + 1) + "'>" + this.nextText + "</a>"; 72 html += "<a href='javascript:;' index='" + this.pageCount + "'>" + this.lastText + "</a>"; 73 } else { 74 html += "<span>" + this.nextText + "</span>"; 75 html += "<span>" + this.lastText + "</span>"; 76 } 77 } 78 html += "</div>"; 79 this.container.innerHTML = html; 80 var linklist = this.container.getElementsByTagName("a"); 81 var self = this; 82 for (var i = 0; i < linklist.length; i++) { 83 linklist[i].onclick = function() { 84 var index = this.getAttribute("index"); 85 if (index) { 86 self.reform(index) 87 } 88 return false; 89 }; 90 } 91 }, 92 changeTotal: function(total) { 93 if (total && !isNaN(total)) { 94 this.total = total; 95 this.render(); 96 } 97 } 98 }

 

使用的代码如下:

 

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml" > 3 <head> 4 <title>分页演示</title> 5 <!-- 导入分页js --> 6 <script type="text/javascript" src="js/pager.js"></script> 7 </head> 8 <body> 9 <div id="pager"></div> 10 <script type="text/javascript"> 11 var pager = new Pager("pager",{pagePize:8,btnAmount:8,first:"首页",prev:"上一页",next:"下一页",last:"尾页"}); 12 // 覆盖当页码改变时调用的方法 13 pager.changeIndex = function(index){ 14 // Ajax调用,获取数据以及数据总数 15 var total = 100;// 手动设置数据总数,获取数据的代码这里就省略了 16 17 // 做你想做的... 18 19 // 设置数据总数 20 pager.changeTotal(total); 21 } 22 // 初始化时设置数据总数为2000,本来应该去数据库查的,这里就省略了... 23 pager.changeTotal(2000) 24 </script> 25 </body> 26 </html>

总算一切完工了...

分享到:
评论

相关推荐

    javaScript分页

    JavaScript分页是网页开发中一个常见且重要的功能,它用于处理大量数据的显示,通过将数据分割成小块,逐页加载,提高了用户体验并优化了页面性能。在本项目中,我们将探讨如何使用纯JavaScript实现分页功能,以及...

    javascript 分页

    javascript 分页

    javascript 分页模块

    7. **类库与插件**:在实际开发中,我们往往使用现有的JavaScript分页库,如`bootstrap-paginator.js`、`pager.js`或本案例中的`Cls_jsPage.js`,这些库封装了上述逻辑,提供更易用的API。 8. **示例代码**:`demo....

    Javascript分页效果(收集了很多强大的JS分页代码)

    这个压缩包中包含了多个JavaScript分页代码示例,适合网页开发者参考和直接应用。 分页效果的实现通常包括以下几个核心部分: 1. 数据获取:首先,需要获取要分页展示的数据。这些数据可以来源于服务器端(如通过...

    js分页javascript分页

    JavaScript分页是网页开发中常用的一种技术,用于处理大量数据时,将数据分割成多个页面进行展示,提高用户体验。在不加载所有数据的情况下,只加载用户当前查看的部分,这样可以减少页面加载时间,提高页面性能。...

    一个通用的JavaScript分页

    JavaScript分页是网页开发中常见的功能,用于处理大量数据时分块显示,提高用户体验。以下是对这个通用JavaScript分页实现的详细解析: 1. **变量定义**: - `totalNum`:总记录数,表示数据源中的条目总数。 - `...

    分享一个自己写的简单的javascript分页组件

    本文介绍了一个使用JavaScript实现的简单分页组件,该组件通过HTML、CSS和JavaScript完成了一个基本的分页功能。...用户可以很轻松地将分页...对于初学者来说,这个组件可以作为学习JavaScript分页功能的一个良好起点。

    10种JavaScript分页代码.rar

    JavaScript分页是网页开发中的一个重要技术,特别是在处理大数据集或长列表时,为了提高用户体验,通常会采用分页展示数据。这个"10种JavaScript分页代码.rar"压缩包文件包含了一系列实现JavaScript分页功能的源代码...

    10种JavaScript分页代码

    JavaScript分页是网页开发中的一个重要技术,特别是在处理大数据集或长列表时,为了提高用户体验,通常会采用分页展示数据。这些分页代码示例提供了多种实现方式,可以帮助开发者理解和应用JavaScript分页功能。 ...

    javascript分页控件20090312

    JavaScript分页控件是网页开发中常用的一种组件,主要用于处理大量数据时的页面显示,以提高用户体验和网页加载效率。2009年3月12日发布的这个资源可能是一个JavaScript实现的分页插件或者代码库,它可以帮助开发者...

    javascript分页控件20090313

    下面我们将深入探讨JavaScript分页控件的相关知识点。 一、JavaScript分页的基本原理 1. 数据分块:JavaScript分页控件的核心思想是将大量数据分成若干小块(页)进行加载。每次只加载用户当前浏览的一页数据,...

    经典JavaScript分页代码

    JavaScript分页是一种常见的网页交互功能,它允许用户在大量数据中按需加载和切换页面,提高用户体验。这个经典JavaScript分页代码实现了一个名为`Page`的类,用于处理分页逻辑。下面将详细解析这个代码中的关键知识...

    10种JavaScript分页效果

    本资源包含10种JavaScript分页效果的实现,旨在帮助开发者更好地理解和应用这一技术。 1. **基础分页**: 基础的分页通常包括数字链接,用户可以点击来跳转到不同的页面。这种分页方式简单直观,易于实现,但可能...

    laypage多功能JavaScript分页组件 v1.3-源码.zip

    《laypage多功能JavaScript分页组件 v1.3-源码》是专为前端开发者设计的一款高效、易用的分页插件。它以其强大的功能、灵活的配置选项和简洁的API,深受广大开发者喜爱。在深入理解并使用这款组件之前,我们需要先...

    高效的JavaScript分页筛选TinyTable表格插件

    总的来说,"高效的JavaScript分页筛选TinyTable表格插件"是一个强大的工具,可以帮助开发者创建具有高性能和用户友好的数据展示界面。它不仅简化了前端开发流程,而且通过提供动态筛选和分页功能,提升了用户对大量...

    javascript分页(页码生成)

    ### JavaScript分页(页码生成)详解 在Web开发中,分页是处理大量数据时常用的一种技术,它能够有效地提升用户体验,避免一次性加载过多数据导致页面响应缓慢。本文将详细解析一个基于JavaScript的简单分页实现...

    JavaScript分页

    JavaScript分页是网页开发中一个常见的技术,它允许用户在不刷新整个页面的情况下,通过点击按钮或链接来加载更多的内容。这种技术对于处理大量数据,如数据库查询结果、文章列表或者用户评论等,非常有效,提高了...

Global site tag (gtag.js) - Google Analytics