碰到反人类分页后台?我用十几行 JS 脚本实现了自动翻页全选

AI摘要
Deepseek提供支持

不知道你有没有遇到过这种让人血压升高的后台系统:界面看着整整齐齐,表格、分页、复选框一应俱全,可真到要批量处理数据的时候,才发现设计有多鸡肋。

我最近就踩了这么个坑。手里有个运维任务,需要对资产列表里的五千多条记录做批量操作,打开对应管理页面第一眼就愣了:整整齐齐的分页表格,每页只显示 10 条,底部明明白白标着 508 页。页面左上角只有当前页的全选框,翻到下一页,上一页勾的内容直接清空;找遍了整个工具栏,既没有「全选全部数据」的按钮,也找不到导出 Excel 的入口。

问了下系统管理员,得到的答复是:产品就这么设计的,目前不支持跨页全选,也没做导出功能。

说白了,要么手动一页一页勾、一页一页提交,要么自己想办法。

无效劳动的尽头,是自动化脚本

最开始我还耐着性子手动点了几页:全选、点操作、确认、翻页、再全选…… 几轮下来人已经麻了。508 页,每页重复三次点击,就算手速再快,全程下来也要小一个小时,纯纯的无效体力劳动。

点到第十页的时候我突然反应过来:这不就是浏览器最擅长解决的重复动作吗?既然网页本身没做功能,我直接在控制台写几行 JS,让浏览器自己点不就行了?

说干就干,按下 F12 打开开发者工具,思路其实特别简单:

  1. 先把当前页所有的复选框都勾上
  2. 自动点击「下一页」按钮
  3. 等页面加载完,重复上面两步
  4. 直到下一页按钮变成灰色(到最后一页)就自动停下

从思路到可用脚本,踩了两个小坑

听起来很简单,但真正写的时候还是踩了两个常见的坑。

第一个坑是翻页加载时机。不能刚点完下一页就立刻去勾选复选框,很多后台是异步加载数据,点完翻页要等个几百毫秒表格内容才会刷新。太快执行勾选,要么勾的还是上一页的数据,要么直接报错找不到元素。所以必须加一个延时,给页面留足加载时间,我这里设了 800 毫秒,慢一点但稳。

第二个坑是下一页按钮的识别。不同前端框架的分页组件长得不一样,类名也五花八门,Element UI 的叫el-pagination__next,Ant Design 的叫ant-pagination-next,还有些老系统直接自己写类名。为了让脚本通用性强一点,我把常见的选择器都加了进去,大部分后台系统都能直接匹配到。

当然还有个最关键的前提提醒,必须提前说清楚:绝大多数分页系统,翻页后上一页的勾选状态是不会保留的。也就是说,这个脚本适合「勾完当前页就执行操作、再翻下一页」的场景;如果你的目标是一次性选中所有页的数据再提交,那光靠前端脚本没用,得系统本身支持跨页选中才行 —— 而鸡肋的地方恰恰就在这里,它就是不支持。

最终成品:十几行代码省一小时

最后整理出来的脚本非常精简,复制粘贴到控制台就能直接跑:

let totalChecked = 0;
function checkCurrentPage() {
  const checkboxes = document.querySelectorAll('tbody input[type="checkbox"]');
  checkboxes.forEach(cb => {
    if (!cb.checked) {
      cb.click();
      totalChecked++;
    }
  });
  console.log('当前页已勾选,累计:' + totalChecked + ' 条');
}
function autoNext() {
  const nextBtn = document.querySelector('.el-pagination__next, .ant-pagination-next, .pagination-next, button[aria-label="下一页"], .btn-next');
  if (!nextBtn || nextBtn.disabled || nextBtn.classList.contains('disabled')) {
    console.log('全部处理完成,累计勾选 ' + totalChecked + ' 条');
    return;
  }
  checkCurrentPage();
  nextBtn.click();
  
  setTimeout(() => {
    autoNext();
  }, 800); // 翻页等待时间,加载慢可调大
}

// 启动脚本
autoNext();

其实每次遇到这种「反人类」的系统设计,一边吐槽一边又会觉得,前端的魅力就在这里:网页是别人做的,但浏览器是自己的。只要懂一点基础的 DOM 操作,就能给自己的工作效率开个挂,把原本几小时的重复劳动,压缩成一行回车的事。

当然还是由衷希望所有后台产品经理都能明白:对批量数据场景来说,「全选全部」和「导出」从来都不是增值功能,是底线。毕竟谁也不想上班的时候,对着 500 页表格当一个人肉点击器。

广告
广告图片
温馨提示 : 非特殊注明,否则均为©李联华的博客网原创文章,本站文章未经授权禁止任何形式转载;来自:俄亥俄州·哥伦布 ,欢迎您的访问!
文章链接:https://www.lilianhua.com/encountering-anti-human-pagination-backend-i-implemented-a.html
请先登录才能参与答题
距本场结束剩 00 00 00 00
轻量应用服务器 2核2G
200M峰值带宽,适用于网站搭建、Web应用、容器环境、电商独立站等
立即前往
扫码进入
扫描二维码购买
文澜千文

文澜千文

请登录以使用此功能。

|
欧鲜生 奶香曲奇饼干1000g酥性饼干整箱小包装年货送礼网红休闲零食品 欧鲜生 奶香曲奇饼干1000g酥性饼干整箱小包装年货送礼网红休闲零食品
弹窗图片

Linux AI

记不住繁琐的Linux参数?让AI为你精准检索!输入你的需求,一秒锁定标准命令,彻底告别搜索引擎的冗长翻找。

Loading...
OpenClaw

OpenClaw 龙虾

AI AGENT GATEWAY
在您的服务器部署 OpenClaw,打造专属极速 AI 助手。
零门槛一键部署环境
支持 QQ/飞书/微信 渠道
跨平台指令分发执行
立即安装