Parfois la page nécessite des données composées de nombreux tableaux différents. Comment la paginer ? L'utilisation de la pagination de base de données est très simple, alors comment utiliser js pour implémenter la pagination ? Ensuite, l'éditeur vous aidera à résoudre ce problème. Les amis qui en ont besoin peuvent venir apprendre ensemble
Je publierai d'abord les rendus pour vous :
En ligne Il existe en effet de nombreux plug-ins de pagination et codes open source. Je suis un développeur backend, mais je ne peux pas contrôler le CSS front-end et d'autres styles, j'ai donc commencé à les écrire moi-même. En fait, le principe de la pagination est très simple, c'est-à-dire utiliser ajax pour transférer la valeur (numéro de page actuel) en arrière-plan, et utiliser la limite en arrière-plan pour la pagination.
Parce que c'est la première fois que j'écris une pagination en utilisant js. L'écriture n'est peut-être pas parfaite. Certaines paginations courantes ne sont pas extraites, mais il est toujours possible d'utiliser ce morceau de code pour le gérer. pagination publique, j'ai juste utilisé le code
pour écrire deux paginations légèrement différentes ! L'extraction du code public est similaire. La raison principale est que l'arrière-plan ajax et la valeur renvoyée sont différents. Tant que la valeur du numéro de page total est obtenue, cliquez sur la page d'accueil/page suivante, etc. passés sont corrects, il n'y aura fondamentalement aucun problème avec la pagination
Méthode 1 d'implémentation de la pagination en utilisant du JS pur :
Sans plus tarder, passons directement au code. !
Remarque : ce projet est entièrement écrit en js. Les données frontales sont obtenues via ajax, puis assemblées et chargées dynamiquement dans la page.
1. Joignez les codes de la page précédente, de la page suivante, etc. (les valeurs à l'intérieur sont toutes de fausses valeurs, et elles seront réaffectées en js ci-dessous !)
<ul class="page" id="page"> <li id="shouye" class="p-prev disabled"> <a href='javascript:indexpage(1);'>首 页</a> </li> <li id="shangyiye" class="p-prev disabled" > <a href='javascript:indexpage(-1);'><i></i>上一页</a> </li> <li ><a id="one" href="javascript:void(0);" >1</a></li> <li><a id="two" href="javascript:void(0);" >2</a></li> <li><a id="three" href="javascript:void(0);" >3</a></li> <li class="more"><a id="five" href="javascript:void(0);" >...</a></li> <li><a id="fore" href="javascript:void(0);" >13855</a></li> <li class='p-next'> <a href='javascript:indexpage(-3);' onclick="jumpToPage('2','/goods/ajaxqueryGoodsList.do.html','','goodsListContainer','13855', listPageCallback);">下一页<i></i></a> </li> <li id="weiye" class='p-next'> <a href='javascript:void(0);' onclick="indexpage(0);">尾 页</a> </li> <li class="total"> <span id="span_number">共13855页 到第<input type="text" id="input_number" class="page-txtbox" />页 <input name="" value="确定" type="button" onclick="jumpToPage(jQuery('#input_number').val(),'/goods/ajaxqueryGoodsList.do.html','','goodsListContainer','13855', listPageCallback);" class="page-btn"/> </span> </li> </ul>
2. Mettez d'abord deux champs masqués sur la page, l'un est le numéro de page actuel et l'autre est le numéro de page total. Le numéro de page total est après le. la page est chargée, et elle peut être directement interrogée depuis l'arrière-plan Valeur attachée, le numéro de page actuel n'opère pas une seule opération, il est nécessaire d'attribuer une valeur au numéro de page actuel
<input id="jiazai" type="hidden" ></input><!-- 当前页码 --> <input id="totalpage" type="hidden" ></input><!-- 总页码 -->
3. Écrivez une fonction une fois la page chargée et attribuez des valeurs au numéro de page total et au numéro de page actuel
$(function(){ $('#jiazai').val(1);//给当前页码进行赋值,默认为第一页 ajaxfunction(page,arg,chipssort,'');//这个方法是抽取的ajax后台访问的方法 });
<. 🎜> 4. Méthode d'extraction ajax, cette page utilisera cette méthode plusieurs fois, elle est donc collectée car les données de la page sont obtenues depuis l'arrière-plan via ajax, l'arrière-plan renvoie une collection List
//抽取ajax的方法 function ajaxfunction(page,arg,chipssort,fontval){ $.ajax({ type:'POST', url:'/admin/receptionchips/showlist',//请求的url地址 data:{ page:page, sort:arg, chipssort:chipssort, fontval:fontval }, dataType:'json', contentType:'application/x-www-form-urlencoded; charset=utf-8', success:function(data){ //返回值在进行访问抽取的方法,从后台返回 commonfunction(data); } }); }
5. Le code voit que ce n'est pas beaucoup, c'est le dernier
//抽取拼串的方法 function commonfunction(data){ $('#projectlist').find("li").remove(); for (var i=0;i<data.length;i++ ) { /*****因为此页面是动态加载的,这里主要就是进行拼串,代码也不少,就不漏出来占空间了*****/ } //开始是分页的核心了 if(data.length>0){ //设置页码 var pading = data[0].padingnum;//总页码 $('#totalpage').val(pading); var page = $('#jiazai').val();//当前页 $('#countpage').html("/"+pading+""); $('#span_number').html("共"+pading+"页 到第页") }else{ $('#countpage').html("/"+0+""); } //设置分页的底部 就是 首页 1 2 3 4 5 6 尾页 var pading = data[0].padingnum;//总页码href="javascript:void(0);" var nowpage = $('#jiazai').val();//当前页 //one two three five fore //下面代码看着是比较麻烦,但是也不难理解 全是一样的代码,只不过是加了些判断 if(nowpage
Implémentation pure js de la deuxième méthode de pagination :
function goPage(pno,psize){ var itable = document.getElementById("idData"); var num = itable.rows.length;//表格行数 var totalPage = 0;//总页数 var pageSize = psize;//每页显示行数 if((num-1)/pageSize > parseInt((num-1)/pageSize)){ totalPage=parseInt((num-1)/pageSize)+1; }else{ totalPage=parseInt((num-1)/pageSize); } var currentPage = pno;//当前页数 var startRow = (currentPage - 1) * pageSize+1;//开始显示的行 var endRow = currentPage * pageSize+1;//结束显示的行 endRow = (endRow > num)? num : endRow; //前三行始终显示 for(i=0;i<1;i++){ var irow = itable.rows[i]; irow.style.display = "block"; } for(var i=1;i=startRow&&i1){ tempStr += " " }else{ tempStr += " "; } for (var i = 1; i <= totalPage; i++) { if (i == currentPage) { tempStr += i+" "; } else { tempStr += ""+i+" " } } if(currentPage<totalPage){ tempStr += " "; }else{ tempStr += " "; } tempStr +=""; document.getElementById("barcon").innerHTML = tempStr; } var base=''; window.onload = function(){ goPage(1,10); }
Tutoriel vidéo JavaScript !