使用js实现HTML静态页面表格数据分页(表头保持不变)

这篇博客展示了如何使用HTML和JavaScript实现表格数据的分页功能。通过定义每页显示的记录数和操作按钮(如上一页、下一页、首页、尾页),动态展示当前页数和总页数,并实现了页面切换的逻辑。该代码适用于前端数据展示的场景,提高了网页加载效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是最终实现的效果图

静态分页最终效果

下面是Html代码

<table id="pageListTable">
	<thead>
		<tr>
			<th style="text-align: center;">...</th>
			<th style="text-align: center;">...</th>
			<th style="text-align: center;">...</th>
			<th style="text-align: center;">...</th>
		</tr>
		<tr>
			<th style="text-align: center;">...</th>
			<th style="text-align: center;">...</th>
			<th style="text-align: center;">...</th>
			<th style="text-align: center;">...</th>
		</tr>
		<tr>
			<th style="text-align: center;">...</th>
			<th style="text-align: center;">...</th>
			<th style="text-align: center;">...</th>
			<th style="text-align: center;">...</th>
		</tr>
	</thead>
	<tbody id="pageListTableBody">
		<tr>
			<td style="text-align: center;">...</td>
			<td style="text-align: center;">...</td>
			<td style="text-align: center;">...</td>
			<td style="text-align: center;">...</td>
		</tr>
		<tr>
			<td style="text-align: center;">...</td>
			<td style="text-align: center;">...</td>
			<td style="text-align: center;">...</td>
			<td style="text-align: center;">...</td>
		</tr>
		<tr>
			<td style="text-align: center;">...</td>
			<td style="text-align: center;">...</td>
			<td style="text-align: center;">...</td>
			<td style="text-align: center;">...</td>
		</tr>
	</tbody>
</table>
<div id="pages" style="float: right;">
   <span id="spanFirst">首页</span>
    <span id="spanPre">上一页</span>
    <span id="spanNext">下一页</span>
    <span id="spanLast">尾页</span><strong id="spanPageNum"></strong>页/共
    <strong id="spanTotalPage"></strong></div>
</div>

下面是js代码块

	var theUL = document.getElementById("pageListTableBody");
    var totalPage = document.getElementById("spanTotalPage");
    var pageNum = document.getElementById("spanPageNum"); //获取当前页<span>
    var spanPre = document.getElementById("spanPre"); //获取上一页<span>
    var spanNext = document.getElementById("spanNext"); //获取下一页<span>
    var spanFirst = document.getElementById("spanFirst"); //获取第一页<span>
    var spanLast = document.getElementById("spanLast"); //获取最后一页<span>
    var numberRowsInTable = theUL.getElementsByTagName("tr").length; //记录总条数
    var pageSize = 10; //每页显示的记录条数
    var page = 1; //当前页,默认第一页

    //下一页
    function next(){
        hideTable();
        currentRow = pageSize * page;
        maxRow = currentRow + pageSize;
        if ( maxRow > numberRowsInTable ) maxRow = numberRowsInTable;
        for ( var i = currentRow; i< maxRow; i++ ){
            theUL.getElementsByTagName("tr")[i].style.display = '';
        }
        page++;
        if ( maxRow == numberRowsInTable ) {
            nextText();
            lastText();
        }
        showPage();
        preLink();
        firstLink();
    }

    //上一页
    function pre(){
        hideTable();
        page--;
        currentRow = pageSize * page;
        maxRow = currentRow - pageSize;
        if ( currentRow > numberRowsInTable ) currentRow = numberRowsInTable;
        for ( var i = maxRow; i< currentRow; i++ ){
            theUL.getElementsByTagName("tr")[i].style.display = '';
        }
        if ( maxRow == 0 ){
            preText();
            firstText();
        }
        showPage();
        nextLink();
        lastLink();
    }

    //第一页
    function first(){
        hideTable();
        page = 1;
        for ( var i = 0; i<pageSize; i++ ){
            theUL.getElementsByTagName("tr")[i].style.display = '';
        }
        showPage();
        firstText();
        preText();
        nextLink();
        lastLink();
    }

    //最后一页
    function last(){
        hideTable();
        page = pageCount();
        currentRow = pageSize * (page - 1);
        for ( var i = currentRow; i<numberRowsInTable; i++ ){
            theUL.getElementsByTagName("tr")[i].style.display = '';
        }
        showPage();
        preLink();
        nextText();
        firstLink();
        lastText();
    }

    function hideTable(){
        for ( var i = 0; i<numberRowsInTable; i++ ){
            theUL.getElementsByTagName("tr")[i].style.display = 'none';
        }
    }

    function showPage(){
        pageNum.innerHTML = page;
    }

    //总共页数
    function pageCount(){
        return Math.ceil(numberRowsInTable/pageSize);
    }
    //显示链接
    function preLink(){
        spanPre.innerHTML = "<a href='javascript:pre();'>上一页</a>";
    }
    function preText(){
        spanPre.innerHTML = "上一页";
    }
    function nextLink(){
        spanNext.innerHTML = "<a href='javascript:next();'>下一页</a>";
    }
    function nextText(){
        spanNext.innerHTML = "下一页";
    }
    function firstLink(){
        spanFirst.innerHTML = "<a href='javascript:first();'>首页</a>";
    }
    function firstText(){
        spanFirst.innerHTML = "首页";
    }
    function lastLink(){
        spanLast.innerHTML = "<a href='javascript:last();'>末页</a>";
    }
    function lastText(){
        spanLast.innerHTML = "末页";
    }

    //隐藏
    function hide(){
        for ( var i = pageSize; i<numberRowsInTable; i++ ){
            theUL.getElementsByTagName("tr")[i].style.display = 'none';
        }
        totalPage.innerHTML = pageCount();
        pageNum.innerHTML = '1';
        nextLink();
        lastLink();
    }
    hide();

参考链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值