js 分页
html代码:
<div id="paging_wrap" class="paging-wrap"></div>
css代码:
div#paging_wrap {
padding-right: 3px;
padding-left: 3px;
padding-bottom: 3px;
margin: 20px 0px;
padding-top: 15px;;
text-align: center
}
div#paging_wrap a {
border: #dedfde 1px solid;
padding-right: 6px;
background-position: 50% bottom;
padding-left: 6px;
padding-bottom: 2px;
color: #0061de;
margin-right: 3px;
padding-top: 2px;
text-decoration: none
}
div#paging_wrap a:hover {
border: #000 1px solid;
background-image: none;
color: #fff;
background-color: #0061de
}
div#paging_wrap a:active {
border-right: #000 1px solid;
border-top: #000 1px solid;
background-image: none;
border-left: #000 1px solid;
color: #fff;
border-bottom: #000 1px solid;
background-color: #0061de
}
div#paging_wrap span.current {
padding-right: 6px;
padding-left: 6px;
font-weight: bold;
padding-bottom: 2px;
color: #ff0084;
margin-right: 3px;
padding-top: 2px
}
div#paging_wrap span.disabled {
padding-right: 6px;
padding-left: 6px;
padding-bottom: 2px;
color: #adaaad;
margin-right: 3px;
padding-top: 2px
}
js代码:
//事件基础类
(function() {
var EventBase = function() { this.addListener = function(type, listener) {
getListener(this, type, true).push(listener);
} this.removeListener = function(type, listener) {
var listeners = getListener(this, type);
for (var i = 0; i < listeners.length; i++) {
if (listeners[i] == listener) {
listeners.splice(i, 1);
return;
}
}
} this.fireEvent = function(type) {
var listeners = getListener(this, type), r, t, k;
if (listeners) {
k = listeners.length;
while (k--) {
t = listeners[k].apply(this, arguments);
if (t !== undefined) {
r = t;
}
}
}
if (t = this['on' + type.toLowerCase()]) {
r = t.apply(this, arguments);
}
return r;
}
} function getListener(obj, type, force) {
var allListeners;
type = type.toLowerCase();
return ((allListeners = (obj.__allListeners || force
&& (obj.__allListeners = {}))) && (allListeners[type] || force
&& (allListeners[type] = [])));
} window['EventBase'] = EventBase;
})(); // 分页类
var Page = function(pageCanvas) {
this.recordCount;
this.pageSize;
this.numericButtonCount;
this.pageCanvas = pageCanvas;
this.pageIndex = 1;
} Page.prototype = new EventBase(); Page.prototype.getPageHtml = function() {
this.pageCount = Math.ceil(this.recordCount / this.pageSize);
var prev = this.pageIndex == 1 ? " <span class='disabled'>上一页</span>"
: " <span class=''><a href='javascript:;' pageindex='"
+ (this.pageIndex - 1) + "'>上一页</a></span> ";
var next = this.pageCount <= this.pageIndex ? " <span class='disabled'>下一页</span>"
: " <span class='current'><a href='javascript:;' pageIndex='"
+ (this.pageIndex + 1) + "'>下一页</a></span>";
var first = this.pageIndex == 1 ? "<span class='current'>1</span>..."
: "<span><a href='javascript:;' pageindex='1'>1</a></span>...";
var last = this.pageCount <= this.pageIndex ? "...<span class='current'>"
+ this.pageCount + "</span>"
: "...<span><a href='javascript:;' pageindex='" + (this.pageCount) + "'>"
+ this.pageCount + "</a></span>";
var pageStr = "" var pageMathIndex = Math.floor(this.numericButtonCount / 2);
var pageStartIndex;
var pageEndIndex; if (this.pageCount < this.numericButtonCount) {
pageStartIndex = 1
pageEndIndex = this.pageCount;
} else {
if (this.pageCount - pageMathIndex < this.pageIndex) {
pageStartIndex = this.pageCount - this.numericButtonCount + 1;
pageEndIndex = this.pageCount;
} else {
if (this.pageIndex - pageMathIndex < 1) {
pageStartIndex = 1;
pageEndIndex = this.numericButtonCount;
} else {
pageStartIndex = this.pageIndex - pageMathIndex;
pageEndIndex = this.pageIndex + pageMathIndex;
}
} } for (var i = pageStartIndex; i <= pageEndIndex; i++) {
if (this.pageIndex == i)
pageStr += " <span class='current'>" + i + "</span>"
else
pageStr += " <span><a href='javascript:;' pageindex='" + i + "'>" + i
+ "</a></span>";
} if (pageStartIndex == 1)
first = '';
if (pageEndIndex == this.pageCount)
last = '';
// pageStr = first + prev + pageStr + next + last;
pageStr = prev + first + pageStr + last + next;
return pageStr;
} Page.prototype.onPageChanged = function(pageIndex) {
this.pageIndex = pageIndex;
this.fireEvent('pageChanged');
} Page.prototype.pageEvent = function(page) {
this.onclick = function(e) {
e = e || window.event;
t = e.target || e.srcElement;
if (t.tagName == "A")
page.onPageChanged(parseInt(t.getAttribute("pageindex")));
}
} Page.prototype.render = function() {
var pageCanvas = document.getElementById(this.pageCanvas);
pageCanvas.innerHTML = this.getPageHtml();
this.pageEvent.call(pageCanvas, this);
} Page.prototype.initialize = function() {
this.onPageChanged(this.pageIndex);
}
function pageInit() {
var p = new Page( 'paging_wrap' );
//总记录数
p.recordCount = selectDtzyCount();
//分页按扭数
p.numericButtonCount = 10;
//每页记录数
p.pageSize = 5;
//当点击分页时触发此事件。 一些外加的效果可以放在此处, 如加载数据
p.addListener( 'pageChanged', function() {
//列表内容
init(p.pageIndex, p.pageSize);
p.render();
} );
p.initialize();
}
js 分页的更多相关文章
- js分页小结
今天解决了JS分页的问题1 页码 给每页的内容套一个相同的类名 通过选择器加上.length或者.size() 来获得总页数2当前页的页码可以使用each(function(index,DOMsss ...
- 自己封装的JS分页功能[用于搭配后台使用]
* 2016.7.03 修复bug,优化代码逻辑 * 2016.5.25 修复如果找不到目标对象的错误抛出. * 2016.5.11 修复当实际页数(pageNumber)小于生成的页码间隔数时的bu ...
- jsp、js分页功能的简单总结
一.概述 首先,我们要明确为何需要分页技术,主要原因有以下: 1.分页可以提高客户体验度,适当地选择合适的数据条数,让页面显得更有条理,使得用户体验感良好,避免过多数据的冗余. 2.提高性能的需要.分 ...
- 一个重构的js分页类
// JavaScript Document /**//** * js分页类 * @param iAbsolute 每页显示记录数 * @param sTableId 分页表格属性ID值,为Strin ...
- 面向对象版js分页
基于前一个js分页,我将代码改成一个面向对象版的js分页,代码如下 http://peng666.github.io/blogs/pageobj <!DOCTYPE html> <h ...
- 纯js分页代码(简洁实用)
纯js写的分页代码. 复制代码代码如下: //每页显示字数 PageSize=5000; //分页模式 flag=2;//1:根据字数自动分页 2:根据[NextPage]分页 //默认页 start ...
- JS分页 + 获取MVC地址栏URL路径的最后参数
@{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport&quo ...
- 浅谈js分页的几种方法
一个项目中必然会遇到分页这种需求的,分页可以使数据加载更合理,也让页面显示更美观,更有层次感!那么js分页到底如何实现呢?下面我就来讲一下三种循序渐进的方法 1.自己纯手写分页 更深入的去理解分页的意 ...
- JS分页条插件
目标 制作js分页导航jq插件,用于无刷新分页或者刷新分页 实现目标参考京东和天猫的分页条. 有四个固定按钮,前页码,后页码,首页,末页. 程序关键点在于计算中间页面的起止位置.逻辑是以当前页码为参照 ...
- js分页实例
js分页实例 案例1 1.js_pageusers.html <!DOCTYPE html> <html> <head> <title>js_pageu ...
随机推荐
- cnpm安装
npm install -g cnpm --registry=https://registry.npm.taobao.org 如果安装失败,可以使用 npm cache clean 清理缓存,然后再重 ...
- 二分+最短路 UVALive - 4223
题目链接:https://vjudge.net/contest/244167#problem/E 这题做了好久都还是超时,看了博客才发现可以用二分+最短路(dijkstra和spfa都可以),也可以用 ...
- TOJ5398: 签到大富翁(简单模拟) and TOJ 5395: 大于中值的边界元素(数组的应用)
Python代码!!! 5395 传送门:http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=53 ...
- 微信小程序开发——使用回调函数出现异常:TypeError: Cannot read property 'setData' of undefined
关键技术点: 作用域问题——回调函数中的作用域已经脱离了调用函数了,因此需要在回调函数外边把this赋给一个新的变量才可以了. 业务需求: 微信小程序开发,业务逻辑需要,需要把获取手机号码的业务逻辑作 ...
- TZOJ 4871 文化之旅(floyd预处理+dfs剪枝)
描述 有一位使者要游历各国,他每到一个国家,都能学到一种文化,但他不愿意学习任何一种文化超过一次,即如果他学习了某种文化,则他就不能到达其他有这种文化的国家.不同的国家可能有相同的文化.不同文化的国家 ...
- C++中的字符数组与字符指针
//[C++基础]字符数组和字符指针.cpp//剑指offer上的这段话://为了节省内存,c/c++把常量字符串放到单独的一个内存空间.但是当几个指针赋值给相同的常量字符串时,它们实际上会指向相同的 ...
- 使用python语言计算n的阶乘
计算“1x2x3x4” def factorial(n): result = n ,n): result *= i return resultdef main(): print factorial(4 ...
- Java_7.1 ArrayList应用点名器
1.ArrayList同样可以添加自定义的类 将学生类添加到ArrayList集合中,其中学生类包括学生姓名,年龄 自定义学生类 package demo1; public class Student ...
- PHP统计网站pv(访问量)
//首先判断有没有统计的文件 if(is_file("pv.txt")){//有 //取文件里面的值 $count=file_get_contents("pv.txt&q ...
- Linux下打开超大文件方法
在Linux下用VIM打开大小几个G.甚至几十个G的文件时,是非常慢的. 这时,我们可以利用下面的方法分割文件,然后再打开. 1 查看文件的前多少行 head -10000 /var/lib/mysq ...