如何用原生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
相关产品推荐
相关产品推荐

