之前做无刷新分页一直用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 || "|<";// “第一页按钮”显示的文本
14 this.prevText = options.prev || "<<"//"上一页按钮"显示的文本
15 this.nextText = options.next || ">>";//“下一页按钮显示”的文本
16 this.lastText = options.last || ">|";//"最后一页按钮"显示的文本
17 } else {
18 this.total = 0;
19 this.pageSize = 10;
20 this.btnAmount = 8;
21 this.firstText = "|<";
22 this.prevText = "<<"
23 this.nextText = ">>";
24 this.lastText = ">|";
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 分页
7. **类库与插件**:在实际开发中,我们往往使用现有的JavaScript分页库,如`bootstrap-paginator.js`、`pager.js`或本案例中的`Cls_jsPage.js`,这些库封装了上述逻辑,提供更易用的API。 8. **示例代码**:`demo....
这个压缩包中包含了多个JavaScript分页代码示例,适合网页开发者参考和直接应用。 分页效果的实现通常包括以下几个核心部分: 1. 数据获取:首先,需要获取要分页展示的数据。这些数据可以来源于服务器端(如通过...
JavaScript分页是网页开发中常用的一种技术,用于处理大量数据时,将数据分割成多个页面进行展示,提高用户体验。在不加载所有数据的情况下,只加载用户当前查看的部分,这样可以减少页面加载时间,提高页面性能。...
JavaScript分页是网页开发中常见的功能,用于处理大量数据时分块显示,提高用户体验。以下是对这个通用JavaScript分页实现的详细解析: 1. **变量定义**: - `totalNum`:总记录数,表示数据源中的条目总数。 - `...
本文介绍了一个使用JavaScript实现的简单分页组件,该组件通过HTML、CSS和JavaScript完成了一个基本的分页功能。...用户可以很轻松地将分页...对于初学者来说,这个组件可以作为学习JavaScript分页功能的一个良好起点。
JavaScript分页是网页开发中的一个重要技术,特别是在处理大数据集或长列表时,为了提高用户体验,通常会采用分页展示数据。这个"10种JavaScript分页代码.rar"压缩包文件包含了一系列实现JavaScript分页功能的源代码...
JavaScript分页是网页开发中的一个重要技术,特别是在处理大数据集或长列表时,为了提高用户体验,通常会采用分页展示数据。这些分页代码示例提供了多种实现方式,可以帮助开发者理解和应用JavaScript分页功能。 ...
JavaScript分页控件是网页开发中常用的一种组件,主要用于处理大量数据时的页面显示,以提高用户体验和网页加载效率。2009年3月12日发布的这个资源可能是一个JavaScript实现的分页插件或者代码库,它可以帮助开发者...
下面我们将深入探讨JavaScript分页控件的相关知识点。 一、JavaScript分页的基本原理 1. 数据分块:JavaScript分页控件的核心思想是将大量数据分成若干小块(页)进行加载。每次只加载用户当前浏览的一页数据,...
JavaScript分页是一种常见的网页交互功能,它允许用户在大量数据中按需加载和切换页面,提高用户体验。这个经典JavaScript分页代码实现了一个名为`Page`的类,用于处理分页逻辑。下面将详细解析这个代码中的关键知识...
本资源包含10种JavaScript分页效果的实现,旨在帮助开发者更好地理解和应用这一技术。 1. **基础分页**: 基础的分页通常包括数字链接,用户可以点击来跳转到不同的页面。这种分页方式简单直观,易于实现,但可能...
《laypage多功能JavaScript分页组件 v1.3-源码》是专为前端开发者设计的一款高效、易用的分页插件。它以其强大的功能、灵活的配置选项和简洁的API,深受广大开发者喜爱。在深入理解并使用这款组件之前,我们需要先...
总的来说,"高效的JavaScript分页筛选TinyTable表格插件"是一个强大的工具,可以帮助开发者创建具有高性能和用户友好的数据展示界面。它不仅简化了前端开发流程,而且通过提供动态筛选和分页功能,提升了用户对大量...
### JavaScript分页(页码生成)详解 在Web开发中,分页是处理大量数据时常用的一种技术,它能够有效地提升用户体验,避免一次性加载过多数据导致页面响应缓慢。本文将详细解析一个基于JavaScript的简单分页实现...
JavaScript分页是网页开发中一个常见的技术,它允许用户在不刷新整个页面的情况下,通过点击按钮或链接来加载更多的内容。这种技术对于处理大量数据,如数据库查询结果、文章列表或者用户评论等,非常有效,提高了...