一个通用的JS分页标签
参考了http://blog.163.com/yexuan_1/blog/static/1343660992012511103844103/
由于本身样式不是太美观,于是在此基础上做了一些修改
<html>
<head>
<style>
.list_page { width: auto; height: auto; float: right; margin-top: 20px;}
.list_page ul li{ width: auto; height: 23px; float: left; background: #eee; margin-left: 5px; border: 1px solid #C4CED8;}
.list_page ul li a{ color: #333; display: block; line-height: 23px; padding: 0 15px; }
.list_page ul li.on{ background: #bbb; border: #bbb; }
.list_page ul li.on a{ color: #fff;}
</style>
<script>
function PageSystem(count, divID, grountCount, callBack) {
this.totolCount = count; //总记录数
this.initMaxPage = grountCount ? grountCount : 5; //显示页数,如 1 2 3 4 5
this.pageSize = 10; //每页记录数
this.currentMax = 0; //当前显示的最大页码, 如 1 2 3 4 5; 5为最大页码
this.currentMin = 0; //当前显示的最小页码, 如 11 12 13 14 15; 11为最小页码
this.homePage = 0; //首页
this.endPage = 0; //未页
this.currentPage = 0; //当前页
this.currentActiveSpan; //当前活动a容器
this.pageDivObj = document.getElementById(divID); //分页系统容器
this.pages = 0; //总页数,计算得到
//this._url = _url; //提交URL
this.callBack = callBack; //回调
var that = this; //指针的引用
this.init = function () {
this.pages = parseInt(this.totolCount / this.pageSize); //获得总共有几页
this.pages = this.totolCount % this.pageSize == 0 ? this.pages : this.pages + 1;
this.createHomePage();
//this.createPrePage();
var n = 1;
while (n <= this.pages) {
if (n > this.initMaxPage) {
break; //到达最大显示数
}
var _li = document.createElement("li");
if (n == 1) { //初始化时第一页为活动页
this.currentActiveSpan = _li;
var _a = document.createElement("A");
_a.href = "javascript:void(0);";
_a.innerText = 1;
_li.appendChild(_a);
that.currentActiveSpan.className = "on";
} else {
var _a = document.createElement("A");
_a.href = "#";
_a.onclick = this.reView;
_a.innerText = n;
_li.appendChild(_a);
}
this.pageDivObj.appendChild(_li);
n++;
}
if (this.pages != 0) {
this.currentMax = n - 1; //当前组最大页码 1 2 3 4 5值为5
this.currentMin = 1; //当前最小页码 1 2 3 4 5 值为1
this.homePage = 1; //首页
this.endPage = this.pages; //未页
this.currentPage = 1; //当前页
}
//alert(this.currentMax);
//alert(this.currentMin);
//this.createNextPage();
this.createEndPage();
};
this.query = function () {
var curPage = that.currentPage; //当前页
var pageSize = that.pageSize;
if (that.callBack) that.callBack(curPage, pageSize);
};
this.reView = function () {
//重新渲染UI
that.reViewActivePage();
that.query();
};
this.reViewActivePage = function () {
//重新渲染当前页视图
var actA = event.srcElement; //当前被点击的 a对象
var ap = actA.parentNode; //获得当前a容器span对象
//还原当前页视图
var _a = document.createElement("A");
_a.href = "#";
_a.onclick = this.reView;
_a.innerText = that.currentActiveSpan.innerText;
that.currentActiveSpan.innerText = "";
that.currentActiveSpan.appendChild(_a);
that.currentActiveSpan.className = "";
//渲染新的当前页视图
that.currentActiveSpan = ap; //切换当前活动页容器
var curPage = parseInt(actA.innerText);
that.currentActiveSpan.removeChild(actA);
var _a = document.createElement("A");
_a.href = "javascript:void(0);";
_a.innerText = curPage;
that.currentActiveSpan.appendChild(_a);
this.currentPage = curPage; //更改当前页码
that.currentActiveSpan.className = "on";
if (!that.toNextGroup()) that.toPreGroup();
};
this.toNextGroup = function () {
//重新渲染显示页下一组 1 2 3 4 5 --> 5 6 7 8 9
if (that.currentPage == that.currentMax) {//点击的页码为当前组最大页码,当go 下一组
if (that.currentPage != that.endPage) { //如果点了未页当然不会再有下一组啦!
that.pageDivObj.innerHTML = ""; //@1
var pageCode = parseInt(that.currentPage) + 1; //显示页码
var n = 2; //当前活动页不重创
this.createHomePage();
//this.createPrePage();
var _a = document.createElement("A");
_a.href = "#";
_a.onclick = that.reView;
_a.innerText = that.currentPage;
that.currentActiveSpan.appendChild(_a);
that.currentActiveSpan.className = "on";
//that.currentActiveSpan.innerText = that.currentPage;
that.pageDivObj.appendChild(that.currentActiveSpan); //将当前活动页回放,请看@1
while (pageCode <= that.pages) {
if (n > that.initMaxPage) {
break; //到达最大显示数
}
var _li = document.createElement("li");
var _a = document.createElement("A");
_a.href = "#";
_a.onclick = that.reView;
_a.innerText = pageCode;
_li.appendChild(_a);
that.pageDivObj.appendChild(_li);
pageCode++;
n++;
}
that.currentMax = pageCode - 1;
that.currentMin = that.currentPage;
// alert("currentMax: " + that.currentMax);
// alert("currentMin: " + that.currentMin);
//this.createNextPage();
that.createEndPage();
return true;
} //end if
} //end if
return false;
};
this.toPreGroup = function () { //
//重新渲染显示页上一组 5 6 7 8 9 -->1 2 3 4 5
if (that.currentPage == that.currentMin) { //点了组中最小页码
if (that.currentPage != 1) {
that.pageDivObj.innerHTML = ""; //@2
var pageCode = parseInt(that.currentPage) - (that.initMaxPage - 1); //显示页码
var n = 2; //当前活动页不重创
this.createHomePage();
//this.createPrePage();
while (true) {
if (n > that.initMaxPage) {
break; //到达最大显示数
}
var _li = document.createElement("li");
var _a = document.createElement("A");
_a.href = "#";
_a.onclick = that.reView;
_a.innerText = pageCode++;
_li.appendChild(_a);
that.pageDivObj.appendChild(_li);
n++;
}
that.currentMax = that.currentPage;
that.currentMin = pageCode - (that.initMaxPage - 1);
//alert("currentMax: " + that.currentMax);
// alert("currentMin" + that.currentMin);
//that.currentActiveSpan.innerText = that.currentPage;
var _a = document.createElement("A");
_a.href = "#";
_a.onclick = that.reView;
_a.innerText = pageCode;
that.currentActiveSpan.appendChild(_a);
that.currentActiveSpan.className = "on";
that.pageDivObj.appendChild(that.currentActiveSpan); //将当前活动页回放,请看@2
//that.createNextPage();
that.createEndPage();
} //end if
} //end if
};
this.toHomePage = function () {
//去到首页
if (that.pages == 0) return;
if (that.currentPage != 1) {//切组
that.pageDivObj.innerHTML = "";
that.init();
} //end if
that.currentPage = 1;
that.currentMin = 1;
that.currentMax = that.initMaxPage;
that.query();
};
this.toEndPage = function () {
//去到未页
if (that.pages == 0 || that.currentPage == that.pages) return;
if (true) {//切组条件修改,此条件作废,临时设为true
that.pageDivObj.innerHTML = "";
that.createHomePage();
//that.createPrePage();
var pageCode = 1;
var n = 1;
while (pageCode <= that.pages) {
if (n > that.initMaxPage - 1) {
n = 1;
}
n++;
pageCode++;
}
pageCode = that.pages - (n - 2);
for (var j = 1; j < n; j++) {
var _li = document.createElement("li");
if (pageCode == that.pages) { //初始化时第一页为活动页
var _a = document.createElement("A");
_a.href = "#";
_a.onclick = that.reView;
_a.innerText = pageCode;
_li.appendChild(_a);
_li.className = "on";
that.currentActiveSpan = _li;
pageCode++;
} else {
var _a = document.createElement("A");
_a.href = "#";
_a.onclick = that.reView;
_a.innerText = pageCode;
_li.appendChild(_a);
pageCode++;
}
that.pageDivObj.appendChild(_li);
}
//that.createNextPage();
that.createEndPage();
} //end if
that.currentPage = that.pages;
that.currentMin = that.pages - (n - 2);
that.currentMax = that.pages;
// alert("currentMin: " + that.currentMin);
//alert("currentMax: " + that.currentMax);
// alert("pages: " + that.pages);
that.query();
};
this.next = function () {
//下一页
};
this.pre = function () {
//上一页
};
this.update = function (count) {
//更新分页系统
this.totolCount = count;
that.pageDivObj.innerHTML = "";
this.init();
};
this.createPrePage = function () {
var _li = document.createElement("li");
var _a = document.createElement("A");
_a.href = "#";
_a.onclick = this.pre;
_a.innerText = "上一页";
_li.appendChild(_a);
this.pageDivObj.appendChild(_li);
};
this.createNextPage = function () {
var _li = document.createElement("li");
var _a = document.createElement("A");
_a.href = "#";
_a.onclick = this.next;
_a.innerText = "下一页";
_li.appendChild(_a);
this.pageDivObj.appendChild(_li);
};
this.createHomePage = function () {
var homeSpan = document.createElement("li");
var _a = document.createElement("A");
_a.href = "#";
_a.onclick = this.toHomePage;
_a.innerText = "首页";
homeSpan.appendChild(_a);
this.pageDivObj.appendChild(homeSpan);
};
this.createEndPage = function () {
var _li = document.createElement("li");
var _a = document.createElement("A");
_a.href = "#";
_a.onclick = this.toEndPage;
_a.innerText = "未页(" + this.pages + ")";
_li.appendChild(_a);
this.pageDivObj.appendChild(_li);
}
}
</script>
<script>
var psys;
window.onload = function() {
psys = new PageSystem(1120, "pageDiv", 10, showMsg); //总记录数, 分页系统容器,每组10页,回调
psys.init();
}
function showMsg(currentPage, pageSize) {
//回调方法自定义,两个参数,第一个为当前页,第二个为每页记录数
/****************将currentPage和pageSize请求数据更新列表,最好使用ajax技术******************/
alert("请求数据要的相应参数>> currentPage: "+ currentPage + " pageSize: " + pageSize);
}
/*****如果要更新分页系统请如下操作******/
//psys.update(count); //@count 为记录总数
function updatePageSys() {
psys.update(150); //@count 为记录总数
}
</script>
<style>
#pageDiv{
font-size:13px;
}
</style>
</head>
<body>
<div class="list_page">
<ul id="pageDiv"></ul>
</div>
<br/><br/>
<a href="#" onclick="updatePageSys();"/>更新分页系统</a>
<DIV class=list_page>
<UL id=pageDiv>
<LI><A href="#">首页</A></LI>
<LI><A href="#">1</A></LI>
<LI class="on"><a>2</a></LI>
<LI><A href="#">3</A></LI>
<LI><A href="#">4</A></LI>
<LI><A href="#">5</A></LI>
<LI><A href="#">6</A></LI>
<LI><A href="#">7</A></LI>
<LI><A href="#">8</A></LI>
<LI><A href="#">9</A></LI>
<LI><A href="#">10</A></LI>
<LI><A href="#">未页(112)</A></LI></UL></DIV><BR><BR>
</body>
</html>




浙公网安备 33010602011771号