本文介绍一个轻量级的JavaScript分页类zakPage,旨在解决无需引入大型库即可实现高效分页的需求。该类仅3kb,支持自定义页码格式、回调函数及样式控制。通过封装源内容容器、分页结果容器及导航逻辑,提供init、gopage等核心方法,适用于对加载速度有要求且需灵活定制分页效果的项目场景。
轻量级JavaScript分页类封装与实现
许多现有插件虽然功能丰富,但往往包含大量非必要功能,导致加载冗余。仅为了单一分页功能而引用整个大型库并不划算,尤其在注重页面加载速度的场景下。虽然服务器性能优异可以缓解部分压力,但轻量化的解决方案仍是优选。鉴于该功能在实际开发中较为常用,因此将其封装为一个独立的类,既方便后续项目复用,也供其他开发者参考学习。
此处提供的仅是一个基础示例,实际使用时可根据需求调整页码样式,类库已内置默认格式。代码中已包含详细注释说明,具体用法可参考示例代码。该类库体积小巧,仅3kb,若对使用方式存在疑问,欢迎留言交流。
未来将陆续分享项目开发中遇到的常见问题及相应的解决方案,旨在与广大开发者共同学习、交流经验。

zakPage类源码解析
jpage.js
代码如下:
/* 排序工具 by Funny ZAk <silenceacegmail.com> 2009-8-23
"调用方式 var zp = new zakPage(参数);zp.init();
参数依次为:源内容容器ID,分页结果显示容器ID,导航栏容器ID,每页显示条数,单条内容回调函数(返回li对象),列表项默认样式,选中后样式(若无则为null或空字符串)
,默认起始页码,页码显示格式字符串*/
function zakPage(id,pagec,navid,pagesize,lievt,ds,ss,idx,navp){
this.obj = this;
this.pageid = id;
this.pagec = pagec;
this.navc = navid;
this.pagesize = pagesize || 7;
this.lievt = lievt || null;
this.rcount = 0;
this.pagecount = 0;
this.cpage = 1;
this.ds = ds;
if(this.ds == null){this.ds = "";}
this.ss = ss;
if(this.ss == null){this.ss = "";}
this.idx = idx;
this.navpre = navp || ["共{$pcount}页/{$rcount}条,当前第{cpage}页","首页","上一页","下一页","末页"];
}
zakPage.prototype = {
init:function(){
document.getElementById(this.pageid).style.display = "none";
this.rcount = document.getElementById(this.pageid).getElementsByTagName("li").length;
var residue = this.rcount%this.pagesize;
var nums = parseInt(this.rcount/this.pagesize);
this.pagecount = nums;
if(residue != 0){this.pagecount = nums+1;}
this.gopage(this.idx);
},
guide:function(){
var nav = document.getElementById(this.navc);
var np = this.navpre;
nav.innerHTML = np[0].replace("{$rcount}",this.rcount).replace("{$pcount}",this.pagecount).replace("{cpage}",this.cpage);
nav.appendChild(this.createa(np[1],1));
nav.appendChild(this.createa(np[2],this.cpage-1));
nav.appendChild(this.createa(np[3],this.cpage+1));
nav.appendChild(this.createa(np[4],this.pagecount));
},
createa:function(html,index){
var aa = document.createElement("a");
aa.innerHTML = html;
var o = this.obj;
aa.onclick = function(){o.gopage(index);}
return aa;
},
gopage:function(index){
if(index>this.pagecount){index=1;}
if(index<=0){index = this.pagecount;}
this.cpage = index;
var ghtml = document.getElementById(this.pagec);
ghtml.innerHTML = "";
var pages = (index-1)*this.pagesize;
var pagee = pages+this.pagesize;
if(pagee>this.rcount){pagee = this.rcount;}
for(var i=pages;i<pagee;i++){
var lil = document.createElement("li");
lil.className = this.ds;
lil.innerHTML = this.litem(i);
var sss = this.ss;
if(this.lievt !=null){
lil.lievt = this.lievt;
lil.onclick = function(){
this.lievt(this);
this.className = sss;
}
}
ghtml.appendChild(lil);
}
this.guide();
},
litem:function(index){
return document.getElementById(this.pageid).getElementsByTagName("li")[index].innerHTML;
}
} 测试代码与使用示例
下面是完整的测试代码,js已经包括在内
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <style type="text/css"> body { text-align:center; padding:20px 0 0 0; font-size:12px; } a { color:#000; font-size:12px; cursor:pointer; } ul, li { margin:0; padding:0; list-style:none; } .contain { margin:0 auto; width:825px; text-align:left; border:1px #000 solid; padding:5px; height:auto; } li.sd a,li.sd a:link,li.sd a:visited{background-color:#000; color:#FFF; font-size:13px;} </style> <title>Jpage Demo - by funnyzak</title> </head> <body> <div class="contain"> <ul id="jpage"> <li>Php 构造函数construct的前下划线是</li> <li>PHP 读取文件内容代码(txt,js等)</li> <li>PHP 用数组降低程序的时间复杂度</li> <li>PHP 柱状图实现代码</li> <li>Ajax+PHP边学边练 之五 图片处理</li> <li>PHPMyadmin 配置文件详解(配置)</li> <li>又一个php 分页类实现代码</li> <li>php 无限分类的树类代码</li> <li>Asp.net 文本框全选的实现</li> <li>php zip文件解压类代码</li> li>各种男女围巾围法图文</li><li> photoshop 鼠绘忧郁的少女头像</li> <li>Photoshop 一只可爱的卡通小蜜蜂</li> <li>Photoshop 调出美女质感的红紫色肤色</li> <li>Photoshop 古典的油画效果处理方法</li> <li>photoshop 利用滤镜及素材打造超酷的火焰字</li> <li>photoshop 鼠绘漂亮的熟睡公主</li> <li>Photoshop 华丽的金色宝石皇冠</li> <li>Photoshop 粉红色的人物写真图片</li> <li>Photoshop 漂亮的紫色人物签名效果</li> <li>Photoshop 偏暗的圣诞美女美白</li><li>Photoshop 蓝色梦幻的潮流壁纸制作</li><li>Photoshop调色教程 人物淡灰色质感肤色</li><li>Photoshop 漂亮的圣诞彩球制作</li><li>Photoshop 简单的光照字效果</li> <li>HTML/JS互相转换工具-IE7兼容版</li> <li>css 在线压缩工具</li> <li>CSS整形与最佳化工具[压缩] </li> <li>JS Minifier js压缩</li> <li>packer_至强的javascript在线加密工具</li> <li>XHTML 代码嵌套查看工具[标签闭合]</li> <li>本站 在线进制转换 可以实现各类进制间</li> <li>在线JS脚本校验器检测js错误 </li> <li>将html转换为php,javascript和asp的在线工具</li> <li>正则表达式30分钟入门教程</li> <li>正则表达式 基础资料</li> <li>javascript 在线参考手册</li> <li>vbscript微软官方参考手册</li> <li>jQuery入门指南教程</li> <li>asp 学习在线手册</li> <li>php5最新中文参考手册</li> <li>mysql</li> <li>sql数据库学习</li> <li>常用广告代码</li> <li>百度近日收录查询</li> <li>alexa排名查询</li> <li>IP/域名WHOIS</li> <li>网页编辑器</li> <li>QQ在线强制聊天工具 加强修正版</li> <li>迅雷 快车专用链接加密解密js代码</li> <li>在线繁简体字转换</li> <li>html中文完全手册</li> <li>qvod解密工具 马克思</li> </ul> <ul id="pagec"> </ul> </div> <div id="navs"></div> </body> </html>[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]