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

单页多个点赞按钮仅首个生效 如何实现独立功能无需重复编码

问题根源

  • document.querySelector() 仅会匹配页面中第一个符合选择器的元素,所以你当前只给第一条帖子的点赞按钮绑定了点击事件
  • 全局唯一的like变量会被所有帖子共享,无法实现每个帖子独立计数

最优解决方案(事件委托)

该方案不需要为每个按钮单独绑定事件,后续动态新增的帖子也能自动支持点赞功能,无需额外编码,你可以直接把原有JS代码全部替换为下面的内容:

// 给帖子父容器绑定点击事件,利用事件冒泡处理所有子按钮的点击
const postContainer = document.querySelector('#opslag-gruppe');

postContainer.addEventListener('click', (e) => {
  // 校验点击来源是否为点赞按钮
  const likeBtn = e.target.closest('.like');
  if (!likeBtn) return;

  // 找到当前按钮对应的点赞数节点
  const likeNumEl = likeBtn.nextElementSibling;
  // 读取当前点赞数累加后更新
  likeNumEl.textContent = Number(likeNumEl.textContent) + 1;
});

备选方案(遍历绑定)

如果你不需要支持后续动态新增帖子,也可以选择遍历所有点赞按钮单独绑定事件:

// 获取页面所有点赞按钮
const allLikeBtns = document.querySelectorAll('.like');

allLikeBtns.forEach(btn => {
  btn.addEventListener('click', () => {
    const likeNumEl = btn.nextElementSibling;
    likeNumEl.textContent = Number(likeNumEl.textContent) + 1;
  });
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:06:04