当前位置:首页 » 网页前端 » jquery实现前端分页
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

jquery实现前端分页

发布时间: 2022-07-04 11:27:05

1. js的分页原理以及实现步骤是什么

主要是借鉴了网上一个例子,修改了一些小地方,前端分页的技巧,表格的数据是已经写好了,可以前端渲染表格然后再分页,都是可以的。

其实分页最关键是这两句:

var startRow = (currentPage - 1) * pageSize+1; //currentPage 为当前页,pageSize为每页显示的数据量
var endRow = currentPage * pageSize;

找到我们需要显示的行的范围(starRow~endRow)

ps:这里在跳转的时候遇到了一个小BUG,就是获取到的select的value值是string类型的,比如获取到了1,然后你想再加1的时候就会变成"11" 而不是我们想要的"2",所以这里需要用parseInt( )来转换一下,小细节需要注意呀!!!

效果图:


[javascript] view plain print?

  • <!doctypehtml>

  • <html>

  • <head>

  • <metacharset='utf-8'>

  • <styletype="text/css">

  • a{

  • text-decoration:none;

  • }

  • .table2{

  • border:#C8C8C8solid;

  • border-width:1px0px0px1px;

  • background:#F3F0F0;

  • margin-top:25px;

  • }

  • .td0{

  • border:#C8C8C8solid;

  • border-width:001px0;

  • }

  • .td2{

  • border:#C8C8C8solid;

  • border-width:01px1px0;

  • }

  • .barcon{

  • width:1000px;

  • margin:0auto;

  • text-align:center;

  • }

  • .barcon1{

  • font-size:17px;

  • float:left;

  • margin-top:20px;

  • }

  • .barcon2{

  • float:right;

  • }

  • .barcon2ul{

  • margin:20px0;

  • padding-left:0;

  • list-style:none;

  • text-align:center;

  • }

  • .barcon2li{

  • display:inline;

  • }

  • .barcon2a{

  • font-size:16px;

  • font-weight:normal;

  • display:inline-block;

  • padding:5px;

  • padding-top:0;

  • color:black;

  • border:1pxsolid#ddd;

  • background-color:#fff;

  • }

  • .barcon2a:hover{

  • background-color:#eee;

  • }

  • .ban{

  • opacity:.4;

  • }

  • </style>

  • </head>

  • <body>

  • <tablewidth="950"cellpadding="0"cellspacing="0"class="table2"align="center">

  • <thead>

  • <tr>

  • <tdcolspan="3"height="33"class="td0"></td>

  • <tdalign="center"class="td2"><ahref="###">添加用户</a></td>

  • </tr>

  • <tralign="center">

  • <thwidth="150"height="33"class="td2">序号</th>

  • <thwidth="300"class="td2">用户名</th>

  • <thwidth="250"class="td2">权限</th>

  • <thwidth="250"class="td2">操作</th>

  • </tr>

  • </thead>

  • <tbodyid="adminTbody">

  • <tralign="center">

  • <tdclass="td2"height="33"width="150">1</td>

  • <tdclass="td2">admin</td>

  • <tdclass="td2">管理员</td>

  • <tdclass="td2"><ahref="###">修改</a></td>

  • </tr>

  • </tbody>

  • </table>

  • <divid="barcon"class="barcon">

  • <divid="barcon1"class="barcon1"></div>

  • <divid="barcon2"class="barcon2">

  • <ul>

  • <li><ahref="###"id="firstPage">首页</a></li>

  • <li><ahref="###"id="prePage">上一页</a></li>

  • <li><ahref="###"id="nextPage">下一页</a></li>

  • <li><ahref="###"id="lastPage">尾页</a></li>

  • <li><selectid="jumpWhere">

  • </select></li>

  • <li><ahref="###"id="jumpPage"onclick="jumpPage()">跳转</a></li>

  • </ul>

  • </div>

  • </div>

  • <scriptsrc="jquery.js"></script>

  • <script>

  • /*动态生成用户函数

  • num为生成的用户数量

  • */

  • functiondynamicAddUser(num){

  • for(vari=1;i<=num;i++)

  • {

  • vartrNode=document.createElement("tr");

  • $(trNode).attr("align","center");

  • //序号

  • vartdNodeNum=document.createElement("td");

  • $(tdNodeNum).html(i+1);

  • tdNodeNum.style.width="150px";

  • tdNodeNum.style.height="33px";

  • tdNodeNum.className="td2";

  • //用户名

  • vartdNodeName=document.createElement("td");

  • $(tdNodeName).html("lzj"+i);

  • tdNodeName.style.width="300px";

  • tdNodeName.className="td2";

  • //权限

  • vartdNodePri=document.createElement("td");

  • tdNodePri.style.width="250px";

  • tdNodePri.className="td2";

  • varpriText=document.createElement("span");

  • $(priText).css({"display":"inline-block","text-align":"center"});

  • $(priText).text("普通用户");

  • tdNodePri.appendChild(priText);

  • //操作

  • vartdNodeOper=document.createElement("td");

  • tdNodeOper.style.width="170px";

  • tdNodeOper.className="td2";

  • vareditA=document.createElement("a");

  • $(editA).attr("href","###").text("编辑");

  • $(editA).css({display:"inline-block"});

  • tdNodeOper.appendChild(editA);

  • trNode.appendChild(tdNodeNum);

  • trNode.appendChild(tdNodeName);

  • trNode.appendChild(tdNodePri);

  • trNode.appendChild(tdNodeOper);

  • $("#adminTbody")[0].appendChild(trNode);

  • }

  • }

  • $(function(){

  • dynamicAddUser(80);

  • goPage(1,10);

  • vartempOption="";

  • for(vari=1;i<=totalPage;i++)

  • {

  • tempOption+='<optionvalue='+i+'>'+i+'</option>'

  • }

  • $("#jumpWhere").html(tempOption);

  • })

  • /**

  • *分页函数

  • *pno--页数

  • *psize--每页显示记录数

  • *分页部分是从真实数据行开始,因而存在加减某个常数,以确定真正的记录数

  • *纯js分页实质是数据行全部加载,通过是否显示属性完成分页功能

  • **/

  • varpageSize=0;//每页显示行数

  • varcurrentPage_=1;//当前页全局变量,用于跳转时判断是否在相同页,在就不跳,否则跳转。

  • vartotalPage;//总页数

  • functiongoPage(pno,psize){

  • varitable=document.getElementById("adminTbody");

  • varnum=itable.rows.length;//表格所有行数(所有记录数)

  • pageSize=psize;//每页显示行数

  • //总共分几页

  • if(num/pageSize>parseInt(num/pageSize)){

  • totalPage=parseInt(num/pageSize)+1;

  • }else{

  • totalPage=parseInt(num/pageSize);

  • }

  • varcurrentPage=pno;//当前页数

  • currentPage_=currentPage;

  • varstartRow=(currentPage-1)*pageSize+1;

  • varendRow=currentPage*pageSize;

  • endRow=(endRow>num)?num:endRow;

  • //遍历显示数据实现分页

  • /*for(vari=1;i<(num+1);i++){

  • varirow=itable.rows[i-1];

  • if(i>=startRow&&i<=endRow){

  • irow.style.display="";

  • }else{

  • irow.style.display="none";

  • }

  • }*/

  • $("#adminTbodytr").hide();

  • for(vari=startRow-1;i<endRow;i++)

  • {

  • $("#adminTbodytr").eq(i).show();

  • }

  • vartempStr="共"+num+"条记录分"+totalPage+"页当前第"+currentPage+"页";

  • document.getElementById("barcon1").innerHTML=tempStr;

  • if(currentPage>1){

  • $("#firstPage").on("click",function(){

  • goPage(1,psize);

  • }).removeClass("ban");

  • $("#prePage").on("click",function(){

  • goPage(currentPage-1,psize);

  • }).removeClass("ban");

  • }else{

  • $("#firstPage").off("click").addClass("ban");

  • $("#prePage").off("click").addClass("ban");

  • }

  • if(currentPage<totalPage){

  • $("#nextPage").on("click",function(){

  • goPage(currentPage+1,psize);

  • }).removeClass("ban")

  • $("#lastPage").on("click",function(){

  • goPage(totalPage,psize);

  • }).removeClass("ban")

  • }else{

  • $("#nextPage").off("click").addClass("ban");

  • $("#lastPage").off("click").addClass("ban");

  • }

  • $("#jumpWhere").val(currentPage);

  • }

  • functionjumpPage()

  • {

  • varnum=parseInt($("#jumpWhere").val());

  • if(num!=currentPage_)

  • {

  • goPage(num,pageSize);

  • }

  • }

  • </script>

  • </body>

  • </html>

2. 那个jQuery插件实现分页,代码中是如何实现的

<%
page=clng(request("page"))
Set rs=Server.CreateObject("ADODB.RecordSet")
if BigClass<>"" and SmallClass <>"" then
sql="select * from news where BigClassName='"&BigClass&"' and SmallClassName='"&SmallClass&"' order by id desc"
rs.Open sql,conn,1,1
elseif BigClass<>"" then
sql="select * from news where BigClassName='"&BigClass&"' order by id desc"
rs.Open sql,conn,1,1
end if
if rs.eof and rs.bof then
response.Write("暂时没有记录")
else
%>
<div class="newslist">
<%
rs.PageSize=20
if page=0 then page=1
pages=rs.pagecount
if page > pages then page=pages
rs.AbsolutePage=page
for j=1 to rs.PageSize
%>
<ul><li><span class="time"><%= RS("AddDate") %></span><a href="news_info.asp?id=<%= RS("id") %>" target="_blank"><%= RS("TITLE") %></a></li></ul>
<%
rs.movenext
if rs.eof then exit for
next
%>
</div>
<div class="clear"></div>
<div class="pagePanel pagePane2">
<ul><li class="cr"><form method=Post action="news.asp?BigClass=<%=BigClass%>&SmallClass=<%=SmallClass%>">
<%if Page<2 then
response.write "首页 上一页 "
else
response.write "<a href=NewsClass.asp?BigClass="&BigClass&"&SmallClass="&SmallClass&"&page=1>首页</a> "
response.write "<a href=NewsClass.asp?BigClass="&BigClass&"&SmallClass="&SmallClass&"&page=" & Page-1 & ">上一页</a> "
end if
if rs.pagecount-page<1 then
response.write "下一页 尾页"
else
response.write "<a href=NewsClass.asp?BigClass="&BigClass&"&SmallClass="&SmallClass&"&page=" & (page+1) & ">"
response.write "下一页</a> <a href=NewsClass.asp?BigClass="&BigClass&"&SmallClass="&SmallClass&"&SmallClass="&SmallClass&"&page="&rs.pagecount&">尾页</a>"
end if
response.write " 页次:<strong><font color=red>"&Page&"</font>/"&rs.pagecount&"</strong>页 "
response.write " 共<b><font color='#FF0000'>"&rs.recordcount&"</font></b>条记录 <b>"&rs.pagesize&"</b>条记录/页"
response.write " 转到:<input type='text' name='page' size=4 maxlength=10 class=input value="&page&">"
response.write " <input class=input type='submit' value=' Goto ' name='cndok'></span></p>"
%>
</form></li></ul>
<div class="clear"></div>
</div><%
end if
rs.close
set rs=nothing
%>

3. jquery基于客户端分页

你的表格可以这样设计:
<table cellpadding="0" cellspacing="0" border="0">
<thead>
<tr>
<th> </th>
<th class="sort-title">Title</th>
<th class="sort-author">Author(s)</th>
<th class="sort-date">Publish Date</th>
<th class="sort-price">Price</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<img src="./img/1.gif" width="97" height="25" alt="Buliding Website"/>
</td>
<td>E见周五为欧式的方式浪费时间都</td>
<td>Nagen Graf</td>
<td>May 2004</td>
<td>$50.09</td>
</tr>
<tr>***</tr>
</tobdy>
</body>

然后js代码可以这样写:试试看,不行的话欢迎在线交流,
$(document).ready(function()
{
var $table = $('table');
//分页效果
var currentPage = 0; //当前页
var pageSize = 10; //每页行数(不包括表头)
//绑定分页事件
$table.bind('repaginate', function()
{
$table.find('tbody tr').hide()
.slice(currentPage * pageSize, (currentPage + 1) * pageSize).show();
});

var numRows = $table.find('tbody tr').length; //记录宗条数
var numPages = Math.ceil(numRows/pageSize); //总页数

var $pager = $('<div class="page"></div>'); //分页div
for( var page = 0; page < numPages; page++ )
{
//为分页标签加上链接
$('<a href="#" ><span>'+ (page+1) +'</span></a>')
.bind("click", { "newPage": page }, function(event)
{
currentPage = event.data["newPage"];
$table.trigger("repaginate");
})
.appendTo($pager);

$pager.append(" ");
}
$pager.insertAfter($table); //分页div插入table

$table.trigger("repaginate"); //初始化

});

4. 请教jQuery EasyUI的DataGrid如何实现滚动追加分页方式

jQuery EasyUI datagrid实现本地分页的方法。分享给大家供大家参考。具体如下:
一般分页都是后台做,前端做无论从哪方面考虑都不合适。但是有的时候还是有这种需求。
这里重点用到了pagination的监听,以及JS数组的slice方法来完成。

5. Jquery + Json 前台Table动态分页

就是和JSP,php等的分页差不多呀,不过用JAVASCRIPT时间罢了。
要知道当前是第几页,共有多少条记录,每页几条就差不多了。

不过话说回来,你这个方法不太好吧?如果无理解错你的意思是先把全部数据都读出来,再在前台用jquery处理分页显示?如果是这样的话,可能会浪费不少哦,比如数据库有1W条记录的话,一次过全部读出来就很浪费了,也没几个人会翻1千页吧?如果是的话那这个方法还行。

6. jquery 分页

可用
function fenye(var page){

$.ajax(
url:url,
data:{page:page},
dataType:'json',
success:funtion(data){
//可以在这里出来data的json数据

}

);
}

7. jqgrid能前台分页么jqgrid前端分页和排序的实现

jQuery("#list27").jqGrid({

url:'localset.php',

datatype: "json",

height: 255,

width: 600,

colNames:['Index','Name', 'Code'],

colModel:[
{name:'item_id',index:'item_id', width:65, sorttype:'int'},
{name:'item',index:'item', width:150},
{name:'item_cd',index:'item_cd', width:100}
],

rowNum:50,

rowTotal: 2000, ----一次加载的最大行数

rowList : [20,30,50],

loadonce:true,
----一次加载

mtype: "GET",

rownumbers: true,
rownumWidth: 40,
gridview: true,
pager: '#pager27',
sortname: 'item_id',
viewrecords: true,
sortorder: "asc",
caption: "Loading data from server at once"
});

8. 求大神解决问题,jquery+json分页怎么实现最好附上代码,简洁一点的。

用jquery ajax异步技术($.post))提交页面显示记录的条数(pageSize)以及要显示的是第几页(pageNo)到服务器,服务器根据这条数进数据库去查询数据(MySQL数据库用limit,Oracle用rownum伪列来实现分页查询),前台pageNo每次加一。分页所需要的页数等于数据库中查询到的记录总条数除于pageSize。把页数,查询的数据response给前台页面。再用bootstrap分页条插件。把分页条的页码超链接中的页数动态获取。总页数在数据库中已经拿到了,修改一下可用

9. jquery 前台数据分页

// JavaScript Document
$(document).ready(function(){
$('#page_break .num li:first').addClass('on');
$('#page_break .num li').click(function(){
//隐藏所有页内容
$("#page_break div[id^='page_']").hide();
//显示当前页内容。
if ($(this).hasClass('on')) {
$('#page_break #page_' + $(this).text()).show();
} else {
$('#page_break .num li').removeClass('on');
$(this).addClass('on');
$('#page_break #page_' + $(this).text()).fadeIn('normal');
}
});
});

10. 怎么样实现分页jquery,ajax

这个有插件的
建议你在 网络搜索,傲隆盛 一般的 做法有前端对数据处理
或者是后端对数据分页,然后使用ajax去根据分页数据分别获取
如果数据量很大 aols
建议你在后台的程序分页后,用ajax去获取再前端再展示
希望对你有帮助!