ホームページ > 記事 > ウェブフロントエンド > ページングを実装するための純粋な JavaScript (2 つのメソッド)
ページには多くの異なるテーブルで構成されるデータが必要な場合があります。ページ分割するにはどうすればよいですか?データベース ページングの使用は非常に簡単ですが、js を使用してページングを実装するにはどうすればよいでしょうか?次に、エディターがこの問題の解決をお手伝いします。必要な友達が来て一緒に学ぶことができます。
まずレンダリングを投稿します:
オンライン ページング プラグインやオープン ソース コードは確かにたくさんあります。私はバックエンドの開発者ですが、フロントエンドの CSS やその他のスタイルを制御できないため、自分で書き始めました。実際、ページングの原理は非常に単純です。つまり、ajax を使用して値 (現在のページ番号) をバックグラウンドに転送し、ページングにはバックグラウンドで制限を使用します。
js を使用してページネーションを記述するのは初めてなので、一部の一般的なコードは抽出されていませんが、このコードは To ハンドルとして使用できます。パブリック ページングでは、コード
を使用して、2 つのわずかに異なるページングを作成しました。パブリックコードの抽出も同様ですが、主な理由は、合計ページ数の値が取得される限り、ホームページ/次のページなどの値が異なる場合です。
純粋な JS を使用してページングを実装する方法 1:
これ以上面倒なことはせずに、コードに直接進みましょう。 !
注: このプロジェクトは完全に js で書かれており、フロントエンド データは ajax を通じて取得され、アセンブルされてページに動的にロードされます。
1. 前のページ、次のページなどのコードを添付します (内部の値はすべて偽の値であり、以下の js で再割り当てされます!)
<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. まず、ページに 2 つの非表示フィールドを配置します。1 つは現在のページ番号で、もう 1 つは合計ページ番号です。ページがロードされ、バックグラウンドから直接クエリできます。値が付加されています。現在のページ番号は単一の操作を実行しません。現在のページ番号に値を割り当てる必要があります。
<input id="jiazai" type="hidden" ></input><!-- 当前页码 --> <input id="totalpage" type="hidden" ></input><!-- 总页码 -->
3. ページがロードされた後に関数を作成し、合計ページ番号と現在のページ番号に値を代入します。 🎜> 4. ajax メソッドの抽出。このページはこのメソッドを数回使用するため、ページのデータが ajax を通じてバックグラウンドから取得されるため収集されます。バックグラウンドはリスト コレクションを返します。
$(function(){ $('#jiazai').val(1);//给当前页码进行赋值,默认为第一页 ajaxfunction(page,arg,chipssort,'');//这个方法是抽取的ajax后台访问的方法 });
5. コードは、これが多くはなく、これが最後のものであることを認識します
//抽取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); } }); }
ページング方法 2 の純粋な js 実装:
//抽取拼串的方法 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
注意: js コード 前のページと次のページで定義された画像は、必要に応じて変更できます さて、これを使用する必要がある場合は、コードを理解するのに少し時間がかかるかもしれませんが、実際には、コードを書くのに 2 時間かかりました。コードを 1 行ずつ読み、自分でコメントを追加する必要があります。これは 30 分以内に完了します。
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); }JavaScript ビデオ チュートリアル