如何获取表格单元格中按钮的DOM路径以实现按钮隐藏
解决单独隐藏表格单元格内按钮的问题
没问题,我来帮你搞定这个需求!你现在的问题是直接隐藏了整个单元格导致布局错乱,其实只需要定位到单元格内的按钮元素,单独控制它的显示状态就可以了,不用动单元格本身。
具体修改方案
你已经知道按钮在第7列(cells[6]),而且按钮有统一的类名.release,这正好可以用来精准定位它。只需要修改你的循环逻辑,从单元格里选中按钮再操作:
- 首先确保你正确获取了表格元素(你的原代码里
table变量可能没定义,需要补充) - 在循环中,先拿到目标单元格,再通过类名选择器找到里面的按钮
- 根据权限判断,单独设置按钮的显示/隐藏状态,单元格保持原样
修改后的完整代码如下:
// 先获取表格元素,避免变量未定义 const table = document.getElementById("DEVmyTable"); const totalrows = table.rows.length; for(let i = 0; i < totalrows; i++){ // 获取第7列的单元格 const targetCell = table.rows[i].cells[6]; // 通过类名找到单元格内的Release按钮 const releaseBtn = targetCell.querySelector('.release'); // 确保按钮存在再操作,避免报错 if(releaseBtn) { if(actualusernamevalue === currentusernamevalue){ // 有权限则显示按钮,用inline-block符合按钮默认的display属性 releaseBtn.style.display = "inline-block"; } else { // 无权限则隐藏按钮 releaseBtn.style.display = "none"; } } }
额外优化建议
你动态创建按钮的时候用了重复的id="release",这其实不符合HTML规范(ID必须是唯一的),建议把ID去掉或者改成带行索引的唯一值,比如:
// 假设i是当前行的索引,创建唯一ID w.innerHTML = `<button onclick="Releaseentry(this)" type="button" id="release-${i}" class="btn btn-primary release">Release</button>`;
不过用类名.release来选择已经足够,所以即使不改ID,上面的代码也能正常工作。
这样修改后,单元格会保持原来的位置和样式,只有按钮会根据权限显示或隐藏,页面布局就不会乱啦!
内容的提问来源于stack exchange,提问作者Sanat
相关产品推荐
相关产品推荐

