分享一个前端拿到数据后,自己生成分页的案例,案例如图显示,点击搜索后查询数据,显示数据列表,前端根据数据显示正确的分页

附上代码:代码附上,简单粗暴,自己用过的,兼容性好,没有封装,可以很好的分页原理,希望可以帮助到大家

html排版如下:

<!--搜索列表-->
<div class="search">
<div class="container">
<div class="searchList">
<table id="searchList">
<!--<tr>
<td>
<a href="">
<p class="title">正标题</p>
<p class="className"><span>所属分类</span><em class="date">2019-01-01</em></p>
<p class="detail">搜索详细信息展示,要考虑没有的情况下,不显示只显示标题</p>
</a>
</td>
</tr>-->
</table>
<div class="pageRow">
<div id="pageination"></div>
</div>
</div>
</div>
</div>

js代码如下:每一步操作都有注释

//鼠标点击的时候搜索
function searchAction() {
var serchId=$('#serchId').val();
$.ajax({
type:"post",
url:"Web/search",
data:{"search":serchId},
success:function (data) {
if(data.total!=0){
$('#searchList').empty();
$.each(data.list,function (i,obj) {
var lielem='<tr>\n' +
' <td>\n' +
' <a href="'+obj.url+'">\n' +
' <p class="title">'+obj.title+'</p>\n' +
' <p class="className" id="className'+i+'"></p>\n' +
' <p class="detail" id="detail'+i+'"></p>\n' +
' </a>\n' +
' </td>\n' +
' </tr>';
$('#searchList').append(lielem);
if(obj.className!= null){
var spanElem='<span>'+obj.className+'</span>';
$('#className'+i).append(spanElem);
}
if(obj.creatTime!=null){
var emElem='<em>'+obj.creatTime+'</em>';
$('#className'+i).append(emElem);
}
if(obj.detail != undefined || obj.detail != null){
var detailElem='<p>'+obj.detail+'</p>';
$('#detail'+i).append(detailElem);
} })
//位置1 对数据进行分页
$('#pageination').show();
pagination(3,1);
}else{
$('#searchList').empty();
var strNull='<p style="text-align: center;line-height: 50px">暂无相关搜索结果</p>' +
'<p style="text-align: center"><a href="index.html"><button id="btnback" type="button">返回首页</button></a></p>';
$('#searchList').append(strNull);
$('#pageination').hide(); } } });
} $('#serchId').on('keydown',function (event) {
var e = event || window.event || arguments.callee.caller.arguments[0];
if (e && e.keyCode==13) {
searchAction();
}
}) //列表分页
//perPage 每一页显示条数 current:当前第几页
function pagination(perPage,current) {
var tableData = document.getElementById("searchList");
var totalCount=tableData.rows.length; //总条数 //设置表格总页数
var totalPage=0;//列表的总页数
var pageSize = perPage;
if (totalCount/pageSize > parseInt(totalCount/pageSize)){
totalPage = parseInt(totalCount/pageSize)+1;
}else{
totalPage = parseInt(totalCount/pageSize);
}
//对数据进行分页
var currentPage=current;
var startRow=(currentPage-1)*pageSize+1;
var endRow=(currentPage*pageSize > totalCount ? totalCount : currentPage*pageSize); for(var i=1;i<(totalCount+1);i++){
var irow = tableData.rows[i-1];
if(i>=startRow && i<=endRow){
irow.style.display = "block";
}else{
irow.style.display = "none";
}
}
//位置2 生成当前的点击按钮
createBtns(totalPage , current);
//位置3 绑定点击事件
bindClick(totalPage); }
//生成点击按钮
//totalPages 分页的总页数
//current当前页
function createBtns(totalPages , current) {
var tempStr = "";
/*上一页按钮*/
if (current > 1) {
/* tempStr += "<span class='btn first' href=\"#\" data-page = '1'>首页</span>";*/
tempStr += "<span class='btn prev' href=\"#\" data-page = "+(current-1)+">上一页</span>"
}
/*中间页码的显示*/
/*如果总页数超出5个处理办法*/
if(totalPages<=5){
for(var pageIndex= 1 ; pageIndex < totalPages+1; pageIndex++){
tempStr += "<a class='btn page"+pageIndex+"' data-page = "+( pageIndex )+"><span>"+ pageIndex +"</span></a>";
}
}else{
if(current<5){
for(var pageIndex= 1 ; pageIndex < 5; pageIndex++){
tempStr += "<a class='btn page"+pageIndex+"' data-page = "+( pageIndex )+"><span>"+ pageIndex +"</span></a>";
}
tempStr+='<span>......</span>';
tempStr += "<a class='btn page"+totalPages+"' data-page = "+( totalPages )+"><span>"+ totalPages +"</span></a>";
}else if(current>= totalPages-4){
tempStr += "<a class='btn page"+1+"' data-page = "+( 1 )+"><span>"+ 1 +"</span></a>";
tempStr+='<span>......</span>';
for(var pageIndex= totalPages-4 ; pageIndex <= totalPages; pageIndex++){
tempStr += "<a class='btn page"+pageIndex+"' data-page = "+( pageIndex )+"><span>"+ pageIndex +"</span></a>";
}
}else if(current>=5 && current <totalPages-4){
tempStr += "<a class='btn page"+1+"' data-page = "+( 1 )+"><span>"+ 1 +"</span></a>";
tempStr+='<span>......</span>';
for(var pageIndex= current ; pageIndex <= current+4; pageIndex++){
tempStr += "<a class='btn page"+pageIndex+"' data-page = "+( pageIndex )+"><span>"+ pageIndex +"</span></a>";
}
tempStr+='<span>......</span>';
tempStr += "<a class='btn page"+totalPages+"' data-page = "+( totalPages )+"><span>"+ totalPages +"</span></a>";
}
}
/*下一页按钮*/
if (current < totalPages) {
tempStr += "<span class='btn next' href=\"#\" data-page = "+(current+1)+">下一页</span>";
/* tempStr += "<span class='btn last' href=\"#\" data-page = "+ (totalPages) +">尾页</span>";*/
}
document.getElementById("pageination").innerHTML = tempStr;
}
function bindClick(totalPage) {
// 设置首页、末页、上一页、下一页的点击事件
var buttonArr = ['first','last','prev','next'];
for(var k in buttonArr){
var $dom = '.'+buttonArr[k];
$('body').delegate( $dom , 'click' , function () {
var data = $(this).data('page');//获取当前按钮跳转的页数
pagination('3' , data);//对页面进行分页
//对当前页码的样式做处理
$('.page'+data).css({background:'#0449d4',color:'#fff'}).siblings().css({background:'#fff',color:'#999'});
})
} // 设置数码的点击事件 totalImgPage是总页数,为全局变量,在分页时被赋值
for (var k = 1 ;k <= totalPage ; k++){
var $singleDom = '.page'+k;
$('body').delegate( $singleDom , 'click' , function () {
var data = $(this).data('page');
pagination('3' , data);//对页面进行分页
//对当前页码的样式做处理
$('.page'+data).css({background:'#0449d4',color:'#fff'}).siblings().css({background:'#fff',color:'#999'});
})
}
}

基于jq复制完整代码此分页功还是能实现的,也展示的分页的原理,若有大神改进,望瞻仰!

前端js分页功能的实现,非常实用,新手必看的更多相关文章

  1. 自己封装的JS分页功能[用于搭配后台使用]

    * 2016.7.03 修复bug,优化代码逻辑 * 2016.5.25 修复如果找不到目标对象的错误抛出. * 2016.5.11 修复当实际页数(pageNumber)小于生成的页码间隔数时的bu ...

  2. jsp、js分页功能的简单总结

    一.概述 首先,我们要明确为何需要分页技术,主要原因有以下: 1.分页可以提高客户体验度,适当地选择合适的数据条数,让页面显得更有条理,使得用户体验感良好,避免过多数据的冗余. 2.提高性能的需要.分 ...

  3. js -- 分页功能

    html 代码 <html> <head> <meta charset='utf-8'> <script type="text/javascript ...

  4. jQuery+AJAX实现纯js分页功能

    使用jQuery的AJAX技术,在bootstrap的框架下搭建的纯js分页 bootstrap作为Twitter推的一款前端框架,效果个人还是觉得很不错的.这次只是拿来作为网页元素的css样式表使用 ...

  5. js分页功能实现

    实现一个js的分页并在弹出框中显示 1.分页插件使用:bootstarp-paginator.js,需要先引入bootstarp.js和jquery.js等: !function($){"u ...

  6. js知识学习图谱,新手必看

    前端新手学习也不外乎就是Html  css  html5  css3  这是最基本的,学会这些仅仅可以说是会写布局,写网页,不算前端开发,还有最重要的js,jq要学习,我自己java后台转前端,现在复 ...

  7. 【前端】JavaScript表达式-新手必看

    转载请注明出处:http://www.cnblogs.com/shamoyuu/p/6145384.html 一.什么是表达式 表达式就是JavaScript里一个短句,JavaScript解释器会将 ...

  8. 纯JS前端分页方法(JS分页)

    1.JS分页函数:开发过程中,分页功能一般是后台提供接口,前端只要传page(当前页码)和pageSize(每页最大显示条数)及对应的其他查询条件,就可以返回所需分页显示的数据. 但是有时也需要前端本 ...

  9. 使用原生js实现前端分页功能

    背景: 从后台提取出来数据,在前端进行分页. 代码: user-manage.js window.onload = function(){ var result = { message : " ...

随机推荐

  1. Python标准类型的分类

    Python有3种不同的模型可以帮助对基本类型进行分类,这些类型更好的理解类型之间的相互关系以及他们的工作原理. 1 存储模型    能保存单个字面对象的类型,称为原子或标量存储:    能保存多个对 ...

  2. PHP的global和$GLOBALS的区别

    global是关键字,通常添加在变量前,可以使变量的作用域为全局. $GLOBALS预定义的超全局变量,把变量扔到里面一样可以变成全局变量. $GLOBALS 是一个关联数组,每一个变量为一个元素,键 ...

  3. 【Stream—6】BufferedStream相关知识分享

    一.简单介绍以下BufferedStream 在前几章的讲述中,我们已经能够掌握流的基本特性和特点,一般进行对流的处理时,系统肩负着IO所带来的开销,调用十分频繁,这时候就应该想个办法减少这种开销,而 ...

  4. javaScript——label语句

    第一次看见label语句是这样一个场景: function foo() {x: 1} 当时十分疑惑,为什么不报错呢?对象可以这样写? 后来知道这个是label语句,一般配合break和continue ...

  5. day48天jQuary

    今日内容 jQuery jQuery引入 下载链接:[jQuery官网](https://jquery.com/),首先需要下载这个jQuery的文件,然后在HTML文件中引入这个文件,就可以使用这个 ...

  6. 浅谈集群版Redis和Gossip协议

    昨天的文章写了关于分布式系统中一致性哈希算法的问题,文末提了一下Redis-Cluster对于一致性哈希算法的实现方案,今天来看一下Redis-Cluster和其中的重要概念Gossip协议. 1.R ...

  7. 不要再造轮子了:聊一聊 JavaScript 的 URL 对象是什么?

    本文由葡萄城技术团队于博客园翻译并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 如果我们自己编写从URL中分析和提取元素的代码,那么有可能会比较痛苦 ...

  8. 安装iris框架

    1.导语 目前Go语言已经为大多数人所熟知,越来越多的开发人员选择使用Go语言来进行开发,但是如何使用 Go来进行web开发,在其他编程语言中都有对应的开发框架,当然在Go中也有,就是即将要介绍的-- ...

  9. Java 中 Snack3的使用

    网上看了一篇Java 中 Gson的使用,所以也跟着写篇Java 中 Snack3的使用 JSON 是一种文本形式的数据交换格式,从Ajax的时候开始流行,它比XML更轻量.比二进制容易阅读和编写:解 ...

  10. jquery树形结构

    <div class="tree_content"> <div class="tree_node"> <div class=&qu ...