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

如何用原生JavaScript和CSS实现点击按钮切换显隐相邻表格行

实现方案

1. 新增CSS样式

在你原有CSS的基础上补充显隐控制的样式:

/* 原有样式保留,可补充border-collapse让边框更美观 */
table,
th,
td {
  border: 1px solid black;
  border-collapse: collapse;
}
/* 区间行默认隐藏样式 */
.toggle-row {
  display: none;
}
/* 区间行显示样式 */
.toggle-row.show {
  display: table-row;
}

2. 编写原生JavaScript逻辑

不需要修改你提供的原有HTML结构,直接添加以下JS代码即可:

document.addEventListener('DOMContentLoaded', function() {
  // 获取所有表格按钮和所有行
  const toggleBtns = document.querySelectorAll('table button');
  const allRows = Array.from(document.querySelectorAll('table tr'));

  // 初始化:给所有按钮行之间的区间行添加默认隐藏类
  let inToggleRange = false;
  allRows.forEach(row => {
    const hasBtn = !!row.querySelector('button');
    if (hasBtn) {
      inToggleRange = true;
      return;
    }
    if (inToggleRange) row.classList.add('toggle-row');
  });

  // 绑定按钮点击事件
  toggleBtns.forEach(btn => {
    btn.addEventListener('click', function() {
      const currentRow = this.closest('tr');
      let nextRow = currentRow.nextElementSibling;

      // 遍历后续行,直到遇到下一个带按钮的行停止
      while(nextRow) {
        if (nextRow.querySelector('button')) break;
        nextRow.classList.toggle('show');
        nextRow = nextRow.nextElementSibling;
      }

      // 可选:切换按钮文本提示,不需要可以删掉下面这行
      this.textContent = this.textContent.includes('show') ? 'hide' : 'show/hide';
    });
  });
});

逻辑说明

  • 页面加载时会自动识别所有带按钮的行,给按钮行之间的内容行自动添加默认隐藏的类,符合默认隐藏的需求
  • 点击按钮时会自动匹配当前行到下一个按钮行之间的所有内容行,切换显隐状态,不同按钮控制的区间互不干扰
  • 不需要修改原有HTML结构,代码无额外依赖

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:54:09