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

2 篇文章 0 订阅
//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="?{=page}">首页</a>' //首页模板
			, lastTPL:'<a href="?{=page}">末页</a>' //末页模板
			, prevTPL:'<a href="?{=page}">上页</a>' //上页模板
			, nextTPL:'<a href="?{=page}">下页</a>' //下页模板
			, prevSideTPL:'<a href="?{=page}"><<</a>' //前组模板(快退)
			, nextSideTPL:'<a href="?{=page}">>></a>' //后组模板(快进)
			, numberTPL:'<a href="?{=page}">{=page}</a>' //页码形式模板
			, pageTPL:'<a href="#{=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="?1">首页</a><a href="?24">上页</a><a href="?14">&lt;&lt;</a><a href="?20">20</a><a href="?21">21</a><a href="?22">22</a><a href="?23">23</a><a href="?24">24</a><a href="#25">25</a><a href="?26">26</a><a href="?27">27</a><a href="?28">28</a><a href="?29">29</a><a href="?30">30</a><a href="?">&gt;&gt;</a><a href="?26">下页</a><a href="?200">末页</a>





  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用PHP的分页函数和SQL语句来实现首页上、下页末页分页功能。下面是一个简单的实现过程: 1. 首先,你需要获取总记录数和每页显示的记录数。可以使用SQL语句查询总记录数,如下所示: ```php $sql = "SELECT COUNT(*) AS total FROM your_table"; $result = mysqli_query($conn, $sql); $row = mysqli_fetch_assoc($result); $total = $row['total']; $per_page = 10; // 每页显示10条记录 ``` 2. 然后,你需要计算总页数。可以使用以下代码: ```php $total_pages = ceil($total / $per_page); ``` 3. 接下来,你需要获取当前页码数。可以使用$_GET变量获取当前页码数,如下所示: ```php $current_page = isset($_GET['page']) ? $_GET['page'] : 1; ``` 4. 然后,你需要计算起始记录的偏移量。可以使用以下代码: ```php $offset = ($current_page - 1) * $per_page; ``` 5. 最后,你需要使用LIMIT语句来查询每页显示的记录。可以使用以下代码: ```php $sql = "SELECT * FROM your_table LIMIT $offset, $per_page"; $result = mysqli_query($conn, $sql); ``` 6. 对于上一页、下一页末页的链接,你可以使用以下代码: ```php if ($current_page > 1) { echo '<a href="?page='.($current_page-1).'">上一页</a>'; } for ($i = 1; $i <= $total_pages; $i++) { if ($i == $current_page) { echo '<span>'.$i.'</span>'; } else { echo '<a href="?page='.$i.'">'.$i.'</a>'; } } if ($current_page < $total_pages) { echo '<a href="?page='.($current_page+1).'">下一页</a>'; } echo '<a href="?page='.$total_pages.'">末页</a>'; ``` 这样就实现了一个简单的分页功能。当然,你还可以根据自己的需要进行更加丰富的定制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值