阅读背景:

js分页插件:首页,上页,快退,页码,快进,下页末页,跳转,使用模板,灵活自由

来源:互联网 
//page(JSON对象);所有属性见代码中ops
define(function (require, exports, module) {	
	module.exports= function(os){
		//可用配置属性
		var ops = {
			total:0 //记录数
			, page:0 //当前页
			, count:0 //或当前记录数
			, side:5 //当前页左右数字页个数
			, per:5 //每页条数
			//模板的值非''才显示,占位符有{=page},{=maxPage},{=total},{=currentPage}
			, firstTPL:'<a href="/go.html?url=?{=page}">首页</a>' //首页模板
			, lastTPL:'<a href="/go.html?url=?{=page}">末页</a>' //末页模板
			, prevTPL:'<a href="/go.html?url=?{=page}">上页</a>' //上页模板
			, nextTPL:'<a href="/go.html?url=?{=page}">下页</a>' //下页模板
			, prevSideTPL:'<a href="/go.html?url=?{=page}"><<</a>' //前组模板(快退)
			, nextSideTPL:'<a href="/go.html?url=?{=page}">>></a>' //后组模板(快进)
			, numberTPL:'<a href="/go.html?url=?{=page}">{=page}</a>' //页码形式模板
			, pageTPL:'<a href="/go.html?url=#{=page}">{=page}</a>' //当前页码模板
			, jumpTPL:'' //跳转form
		}; 
		for (var o in ops)
			o in os && (ops[o]=os[o]);   
		function parseTPL(tpl,json) {
			if (!tpl)
				return '';
			json.maxPage = ops.maxp;
			json.total = ops.total;
			json.currentPage = ops.page;
			return String(tpl).replace(/\{\=(\w+)\}/g,function(
//page(JSON对象);所有属性见代码中ops
define(function (require, exports, module) {	
	module.exports= function(os){
		//可用配置属性
		var ops = {
			total:0 //记录数
			, page:0 //当前页
			, count:0 //或当前记录数
			, side:5 //当前页左右数字页个数
			, per:5 //每页条数
			//模板的值非''才显示,占位符有{=page},{=maxPage},{=total},{=currentPage}
			, firstTPL:'<a href="/go.html?url=?{=page}">首页</a>' //首页模板
			, lastTPL:'<a href="/go.html?url=?{=page}">末页</a>' //末页模板
			, prevTPL:'<a href="/go.html?url=?{=page}">上页</a>' //上页模板
			, nextTPL:'<a href="/go.html?url=?{=page}">下页</a>' //下页模板
			, prevSideTPL:'<a href="/go.html?url=?{=page}"><<</a>' //前组模板(快退)
			, nextSideTPL:'<a href="/go.html?url=?{=page}">>></a>' //后组模板(快进)
			, numberTPL:'<a href="/go.html?url=?{=page}">{=page}</a>' //页码形式模板
			, pageTPL:'<a href="/go.html?url=#{=page}">{=page}</a>' //当前页码模板
			, jumpTPL:'' //跳转form
		}; 
		for (var o in ops)
			o in os && (ops[o]=os[o]);   
		function parseTPL(tpl,json) {
			if (!tpl)
				return '';
			json.maxPage = ops.maxp;
			json.total = ops.total;
			json.currentPage = ops.page;
			return String(tpl).replace(/\{\=(\w+)\}/g,function($0,$1){
				return json[$1]||'';
			});
		}

		var pages = '';
		(!+ops.per || ops.per < 1) && (ops.per = 5);
		if (!+ops.total || ops.total <= ops.per )
			return pages;//只有一页
		ops.maxp = Math.ceil(ops.total/ops.per);//最大页  
		
		//得到当前页码与偏移
		if (ops.count > 0) {//使用条数方式
			ops.count > ops.total && (ops.count = ops.total);	
			ops.page = Math.ceil(ops.count/ops.per);//数据位移转换成页,余+1
		} else if (ops.page > 1){//页码式
			ops.page > ops.maxp && (ops.page = ops.maxp);
			ops.count = ops.page*ops.per;
		} else {
			ops.count = 0;
			ops.page = 1;
		}

		ops.nums = ops.side*2+1;//总数字页为*2+1        
		
		console.log(ops);
		//首页/上页,左边页面码,page>side出现
		if (ops.page > ops.side+1)
			pages += parseTPL(ops.firstTPL,{page:1})
					+ parseTPL(ops.prevTPL,{page:ops.page-1});
					
		//快退:
		var prevp = ops.page - ops.nums;
		if (prevp > 1 )
			pages += parseTPL(ops.prevSideTPL,{page:prevp});
		
		//中间左边/右边的页码
		for  (var fi = ops.side, sidel=sider='',pl=pr=ops.page;fi >0; fi--) {	
			//左边页面码
			if (--pl >= 1)
				sidel = parseTPL(ops.numberTPL,{page:pl}) + sidel;	
			//右边页码
			if (++pr <= ops.maxp)
				sider += parseTPL(ops.numberTPL,{page:pr});			
		}

		pages += sidel 
				+ parseTPL(ops.pageTPL,{page:ops.page})
				+ sider;
		
		//快进按钮
		var nextp = ops.page + ops.nums;
		if (ops.maxp > nextp )
			pages += parseTPL(ops.nextSideTPL,nextp);   
		
		//最后的按钮
		if (ops.maxp- ops.page > ops.side)
			pages += parseTPL(ops.nextTPL,{page:ops.page+1})			
				+parseTPL(ops.lastTPL,{page:ops.maxp});
			
		//跳转
		if (ops.page > ops.side || ops.maxp-ops.page >ops.side)
			pages += parseTPL(ops.jumpTPL,{page:ops.page});
				
		return pages;
	}
});


使用方法

seajs见seajs.org

或者改写成普通的插件

seajs.use('chrd/page/1.0/page.js#?kdkddddddgdkk',function(p){page = p({total:1000,page:25});console.log(page);})
Object {total1000page25count125side5per5}
page.js:55
<a href="/go.html?url=?1">首页</a><a href="/go.html?url=?24">上页</a><a href="/go.html?url=?14">&lt;&lt;</a><a href="/go.html?url=?20">20</a><a href="/go.html?url=?21">21</a><a href="/go.html?url=?22">22</a><a href="/go.html?url=?23">23</a><a href="/go.html?url=?24">24</a><a href="/go.html?url=#25">25</a><a href="/go.html?url=?26">26</a><a href="/go.html?url=?27">27</a><a href="/go.html?url=?28">28</a><a href="/go.html?url=?29">29</a><a href="/go.html?url=?30">30</a><a href="/go.html?url=?">&gt;&gt;</a><a href="/go.html?url=?26">下页</a><a href="/go.html?url=?200">末页</a>






,
//page(JSON对象);所有属性见代码中ops
define(function (require, exports, module) {	
	module.exports= function(os){
		//可用配置属性
		var ops = {
			total:0 //记录数
			, page:0 //当前页
			, count:0 //或当前记录数
			, side:5 //当前页左右数字页个数
			, per:5 //每页条数
			//模板的值非''才显示,占位符有{=page},{=maxPage},{=total},{=currentPage}
			, firstTPL:'<a href="/go.html?url=?{=page}">首页</a>' //首页模板
			, lastTPL:'<a href="/go.html?url=?{=page}">末页</a>' //末页模板
			, prevTPL:'<a href="/go.html?url=?{=page}">上页</a>' //上页模板
			, nextTPL:'<a href="/go.html?url=?{=page}">下页</a>' //下页模板
			, prevSideTPL:'<a href="/go.html?url=?{=page}"><<</a>' //前组模板(快退)
			, nextSideTPL:'<a href="/go.html?url=?{=page}">>></a>' //后组模板(快进)
			, numberTPL:'<a href="/go.html?url=?{=page}">{=page}</a>' //页码形式模板
			, pageTPL:'<a href="/go.html?url=#{=page}">{=page}</a>' //当前页码模板
			, jumpTPL:'' //跳转form
		}; 
		for (var o in ops)
			o in os && (ops[o]=os[o]);   
		function parseTPL(tpl,json) {
			if (!tpl)
				return '';
			json.maxPage = ops.maxp;
			json.total = ops.total;
			json.currentPage = ops.page;
			return String(tpl).replace(/\{\=(\w+)\}/g,function($0,$1){
				return json[$1]||'';
			});
		}

		var pages = '';
		(!+ops.per || ops.per < 1) && (ops.per = 5);
		if (!+ops.total || ops.total <= ops.per )
			return pages;//只有一页
		ops.maxp = Math.ceil(ops.total/ops.per);//最大页  
		
		//得到当前页码与偏移
		if (ops.count > 0) {//使用条数方式
			ops.count > ops.total && (ops.count = ops.total);	
			ops.page = Math.ceil(ops.count/ops.per);//数据位移转换成页,余+1
		} else if (ops.page > 1){//页码式
			ops.page > ops.maxp && (ops.page = ops.maxp);
			ops.count = ops.page*ops.per;
		} else {
			ops.count = 0;
			ops.page = 1;
		}

		ops.nums = ops.side*2+1;//总数字页为*2+1        
		
		console.log(ops);
		//首页/上页,左边页面码,page>side出现
		if (ops.page > ops.side+1)
			pages += parseTPL(ops.firstTPL,{page:1})
					+ parseTPL(ops.prevTPL,{page:ops.page-1});
					
		//快退:
		var prevp = ops.page - ops.nums;
		if (prevp > 1 )
			pages += parseTPL(ops.prevSideTPL,{page:prevp});
		
		//中间左边/右边的页码
		for  (var fi = ops.side, sidel=sider='',pl=pr=ops.page;fi >0; fi--) {	
			//左边页面码
			if (--pl >= 1)
				sidel = parseTPL(ops.numberTPL,{page:pl}) + sidel;	
			//右边页码
			if (++pr <= ops.maxp)
				sider += parseTPL(ops.numberTPL,{page:pr});			
		}

		pages += sidel 
				+ parseTPL(ops.pageTPL,{page:ops.page})
				+ sider;
		
		//快进按钮
		var nextp = ops.page + ops.nums;
		if (ops.maxp > nextp )
			pages += parseTPL(ops.nextSideTPL,nextp);   
		
		//最后的按钮
		if (ops.maxp- ops.page > ops.side)
			pages += parseTPL(ops.nextTPL,{page:ops.page+1})			
				+parseTPL(ops.lastTPL,{page:ops.maxp});
			
		//跳转
		if (ops.page > ops.side || ops.maxp-ops.page >ops.side)
			pages += parseTPL(ops.jumpTPL,{page:ops.page});
				
		return pages;
	}
});


使用方法

seajs见seajs.org

或者改写成普通的插件

seajs.use('chrd/page/1.0/page.js#?kdkddddddgdkk',function(p){page = p({total:1000,page:25});console.log(page);})
Object {total1000page25count125side5per5}
page.js:55
<a href="/go.html?url=?1">首页</a><a href="/go.html?url=?24">上页</a><a href="/go.html?url=?14">&lt;&lt;</a><a href="/go.html?url=?20">20</a><a href="/go.html?url=?21">21</a><a href="/go.html?url=?22">22</a><a href="/go.html?url=?23">23</a><a href="/go.html?url=?24">24</a><a href="/go.html?url=#25">25</a><a href="/go.html?url=?26">26</a><a href="/go.html?url=?27">27</a><a href="/go.html?url=?28">28</a><a href="/go.html?url=?29">29</a><a href="/go.html?url=?30">30</a><a href="/go.html?url=?">&gt;&gt;</a><a href="/go.html?url=?26">下页</a><a href="/go.html?url=?200">末页</a>






){ return json[
//page(JSON对象);所有属性见代码中ops
define(function (require, exports, module) {	
	module.exports= function(os){
		//可用配置属性
		var ops = {
			total:0 //记录数
			, page:0 //当前页
			, count:0 //或当前记录数
			, side:5 //当前页左右数字页个数
			, per:5 //每页条数
			//模板的值非''才显示,占位符有{=page},{=maxPage},{=total},{=currentPage}
			, firstTPL:'<a href="/go.html?url=?{=page}">首页</a>' //首页模板
			, lastTPL:'<a href="/go.html?url=?{=page}">末页</a>' //末页模板
			, prevTPL:'<a href="/go.html?url=?{=page}">上页</a>' //上页模板
			, nextTPL:'<a href="/go.html?url=?{=page}">下页</a>' //下页模板
			, prevSideTPL:'<a href="/go.html?url=?{=page}"><<</a>' //前组模板(快退)
			, nextSideTPL:'<a href="/go.html?url=?{=page}">>></a>' //后组模板(快进)
			, numberTPL:'<a href="/go.html?url=?{=page}">{=page}</a>' //页码形式模板
			, pageTPL:'<a href="/go.html?url=#{=page}">{=page}</a>' //当前页码模板
			, jumpTPL:'' //跳转form
		}; 
		for (var o in ops)
			o in os && (ops[o]=os[o]);   
		function parseTPL(tpl,json) {
			if (!tpl)
				return '';
			json.maxPage = ops.maxp;
			json.total = ops.total;
			json.currentPage = ops.page;
			return String(tpl).replace(/\{\=(\w+)\}/g,function($0,$1){
				return json[$1]||'';
			});
		}

		var pages = '';
		(!+ops.per || ops.per < 1) && (ops.per = 5);
		if (!+ops.total || ops.total <= ops.per )
			return pages;//只有一页
		ops.maxp = Math.ceil(ops.total/ops.per);//最大页  
		
		//得到当前页码与偏移
		if (ops.count > 0) {//使用条数方式
			ops.count > ops.total && (ops.count = ops.total);	
			ops.page = Math.ceil(ops.count/ops.per);//数据位移转换成页,余+1
		} else if (ops.page > 1){//页码式
			ops.page > ops.maxp && (ops.page = ops.maxp);
			ops.count = ops.page*ops.per;
		} else {
			ops.count = 0;
			ops.page = 1;
		}

		ops.nums = ops.side*2+1;//总数字页为*2+1        
		
		console.log(ops);
		//首页/上页,左边页面码,page>side出现
		if (ops.page > ops.side+1)
			pages += parseTPL(ops.firstTPL,{page:1})
					+ parseTPL(ops.prevTPL,{page:ops.page-1});
					
		//快退:
		var prevp = ops.page - ops.nums;
		if (prevp > 1 )
			pages += parseTPL(ops.prevSideTPL,{page:prevp});
		
		//中间左边/右边的页码
		for  (var fi = ops.side, sidel=sider='',pl=pr=ops.page;fi >0; fi--) {	
			//左边页面码
			if (--pl >= 1)
				sidel = parseTPL(ops.numberTPL,{page:pl}) + sidel;	
			//右边页码
			if (++pr <= ops.maxp)
				sider += parseTPL(ops.numberTPL,{page:pr});			
		}

		pages += sidel 
				+ parseTPL(ops.pageTPL,{page:ops.page})
				+ sider;
		
		//快进按钮
		var nextp = ops.page + ops.nums;
		if (ops.maxp > nextp )
			pages += parseTPL(ops.nextSideTPL,nextp);   
		
		//最后的按钮
		if (ops.maxp- ops.page > ops.side)
			pages += parseTPL(ops.nextTPL,{page:ops.page+1})			
				+parseTPL(ops.lastTPL,{page:ops.maxp});
			
		//跳转
		if (ops.page > ops.side || ops.maxp-ops.page >ops.side)
			pages += parseTPL(ops.jumpTPL,{page:ops.page});
				
		return pages;
	}
});


使用方法

seajs见seajs.org

或者改写成普通的插件

seajs.use('chrd/page/1.0/page.js#?kdkddddddgdkk',function(p){page = p({total:1000,page:25});console.log(page);})
Object {total1000page25count125side5per5}
page.js:55
<a href="/go.html?url=?1">首页</a><a href="/go.html?url=?24">上页</a><a href="/go.html?url=?14">&lt;&lt;</a><a href="/go.html?url=?20">20</a><a href="/go.html?url=?21">21</a><a href="/go.html?url=?22">22</a><a href="/go.html?url=?23">23</a><a href="/go.html?url=?24">24</a><a href="/go.html?url=#25">25</a><a href="/go.html?url=?26">26</a><a href="/go.html?url=?27">27</a><a href="/go.html?url=?28">28</a><a href="/go.html?url=?29">29</a><a href="/go.html?url=?30">30</a><a href="/go.html?url=?">&gt;&gt;</a><a href="/go.html?url=?26">下页</a><a href="/go.html?url=?200">末页</a>






]||''; }); } var pages = ''; (!+ops.per || ops.per < 1) && (ops.per = 5); if (!+ops.total || ops.total <= ops.per ) return pages;//只有一页 ops.maxp = Math.ceil(ops.total/ops.per);//最大页 //得到当前页码与偏移 if (ops.count > 0) {//使用条数方式 ops.count > ops.total && (ops.count = ops.total); ops.page = Math.ceil(ops.count/ops.per);//数据位移转换成页,余+1 } else if (ops.page > 1){//页码式 ops.page > ops.maxp && (ops.page = ops.maxp); ops.count = ops.page*ops.per; } else { ops.count = 0; ops.page = 1; } ops.nums = ops.side*2+1;//总数字页为*2+1 console.log(ops); //首页/上页,左边页面码,page>side出现 if (ops.page > ops.side+1) pages += parseTPL(ops.firstTPL,{page:1}) + parseTPL(ops.prevTPL,{page:ops.page-1}); //快退: var prevp = ops.page - ops.nums; if (prevp > 1 ) pages += parseTPL(ops.prevSideTPL,{page:prevp}); //中间左边/右边的页码 for (var fi = ops.side, sidel=sider='',pl=pr=ops.page;fi >0; fi--) { //左边页面码 if (--pl >= 1) sidel = parseTPL(ops.numberTPL,{page:pl}) + sidel; //右边页码 if (++pr <= ops.maxp) sider += parseTPL(ops.numberTPL,{page:pr}); } pages += sidel + parseTPL(ops.pageTPL,{page:ops.page}) + sider; //快进按钮 var nextp = ops.page + ops.nums; if (ops.maxp > nextp ) pages += parseTPL(ops.nextSideTPL,nextp); //最后的按钮 if (ops.maxp- ops.page > ops.side) pages += parseTPL(ops.nextTPL,{page:ops.page+1}) +parseTPL(ops.lastTPL,{page:ops.maxp}); //跳转 if (ops.page > ops.side || ops.maxp-ops.page >ops.side) pages += parseTPL(ops.jumpTPL,{page:ops.page}); return pages; } });//page(JSON对象);所有属性见代码中ops define(function (req



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: