You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在htmx中动态递增页码实现无限表格加载?

解决HTMX表格无限滚动的页码递增问题

方法1:服务端直接生成下一页请求(最省心)

不用折腾前端逻辑,服务端处理请求时,直接根据当前的page参数算出下一页页码(next_page = page + 1),然后在返回的表格最后一行里,把hx-get直接写成/new?limit=10&page={next_page}。

举个Golang示例(以gin框架为例):

func handleNew(c *gin.Context) {
    page, _ := strconv.Atoi(c.Query("page"))
    limit, _ := strconv.Atoi(c.Query("limit"))
    
    // 执行数据查询,获取当前页内容
    data := fetchPageData(page, limit)
    
    // 渲染模板时传入下一页参数
    c.HTML(http.StatusOK, "table_rows.tmpl", gin.H{
        "data": data,
        "nextPage": page + 1,
        "limit": limit,
    })
}

模板里的加载行写法:

<tr hx-get="/new?limit={{.limit}}&page={{.nextPage}}" hx-trigger="revealed" hx-swap="afterend">
    <td colspan="你的表格列数">加载更多...</td>
</tr>

用户每加载一页,新返回的最后一行会自动带好下一页的页码,全程无状态,服务端不用存会话数据,前端也不用额外处理。

方法2:前端用HTMX属性+JS动态计算页码

如果不想让服务端生成下一页链接,可以在前端用data-*属性存当前页码,结合hx-vals的JS表达式递增:

  1. 初始加载行:
<tr hx-get="/new" hx-vals='{"limit": 10, "page": parseInt(this.dataset.page) + 1}' 
    data-page="1" hx-trigger="revealed" hx-swap="afterend">
    <td colspan="N">加载更多...</td>
</tr>
  1. 监听HTMX加载完成事件,更新页码属性:
document.body.addEventListener('hx:afterSwap', function(event) {
    const loadRow = event.target.querySelector('[hx-get="/new"]');
    if (loadRow) {
        const currentPage = parseInt(loadRow.dataset.page);
        loadRow.dataset.page = currentPage + 1;
    }
});

每次加载后,data-page自动加1,下次触发请求时就会传递新的页码。

方法3:用隐藏输入框存储当前页码

在页面中添加隐藏输入框:

<input type="hidden" id="current-page" value="1">

加载行写法:

<tr hx-get="/new?limit=10" hx-include="#current-page" 
    hx-trigger="revealed" hx-swap="afterend">
    <td colspan="N">加载更多...</td>
</tr>

同样监听hx:afterSwap事件更新输入框值:

document.body.addEventListener('hx:afterSwap', function() {
    const pageInput = document.getElementById('current-page');
    pageInput.value = parseInt(pageInput.value) + 1;
});

原理和方法2一致,只是把页码存储在输入框中而非元素属性。


内容的提问来源于stack exchange,提问作者farhany

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 19:06:15