用纯js实现列表分页

提供一种纯 js 分页思路。

由于该需求获取到的数据量较少,所有选择直接请求后端,一次性接了所有的数据,然后拼接html代码来展示数据。

var pageSize = 5;   // 每页数据条数
var pageNum = 0;    // 总页数
var allData;   // 接收到的所有数据
$(function () {
    $.ajax({
        type: 'POST',
        crossDomain: true,
        async: false,
        url: '后端接口',
        data: {'参数'},
        success: function (data) {
            allData = data.key; // key为后端输出的key值
            toPage(1);
        }
    });
});

// 分页,跳转
function toPage(pno) { // pno:代表第几页,当前页
    // 总行数
    var num = allData.length;
    // 总页数
    pageNum = num / pageSize;
    pageNum = pageNum > parseInt(pageNum) ? parseInt(pageNum) + 1 : parseInt(pageNum);
    // 开始行
    var startRow = (pno - 1) * pageSize;
    // 结束行
    var endRow = pno * pageSize - 1;
    // 最后一页的结束行判断
    endRow = (endRow > num) ? num - 1 : endRow;
    // 拼接标题
    var htmlStr = '<tr class="title" height="40"><td style="text-align: left;" colspan="5"><span id="reportHead">标题</span></td></tr>';
    // 拼接表头
    htmlStr += '<tr class="header" nowrap="nowrap"><th>列1</th><th>列2</th><th>列3</th><th>列4</th><th>列5</th></tr>';
    // 列表
    for (var i = startRow; i <= endRow; i++) {
        // 拼接列表的html语句  逻辑判断等   略
        htmlStr += '~~~~~~~~~~';
    }
    // 页脚
    htmlStr += '<tr class="footer"><th colspan="5" id="footer"><div>'
        + '当前第 ' + pno + ' 页/共 ' + pageNum + ' 页  每页显示 ' + pageSize + ' 条记录,';
    // 判断是否为第一页,是则首页与上一页无点击事件
    if (pno == 1) {
        htmlStr += '首页 上一页 ';
    } else {
        htmlStr += '<a href="#" οnclick="toPage(1);">首页 </a>'
            + '<a href="#" οnclick=\"toPage(' + (pno - 1) + ');\">上一页 </a>';
    }
    // 判断是否为最后一页,是则下一页与尾页无点击事件
    if (pno == pageNum) {
        htmlStr += '下一页 尾页';
    } else {
        htmlStr += '<a href="#" οnclick=\"toPage(' + (pno + 1) + ');\">下一页 </a>'
            + '<a href="#" οnclick=\"toPage(' + pageNum + ');\">尾页</a></div></th></tr>';
    }
    $("#mainTab").html(htmlStr);
}

页脚展示:

                当前第 1 页/共 1 页 每页显示 5 条记录,首页 上一页 下一页 尾页
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值