JavaScript如何实现基于复选框状态动态隐藏表格行

来源:Golang编程网作者:湖南程序员头衔:程序员
导读:本期聚焦于小伙伴创作的《JavaScript如何实现基于复选框状态动态隐藏表格行》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《JavaScript如何实现基于复选框状态动态隐藏表格行》有用,将其分享出去将是对创作者最好的鼓励。

在前端开发中,表格是展示结构化数据的常用组件,很多时候我们需要根据用户的选择动态调整表格内容的显示范围,基于复选框状态动态隐藏表格行就是典型的应用场景。这种交互方式可以让用户快速筛选需要查看的内容,减少无关信息的干扰。

JavaScript如何实现基于复选框状态动态隐藏表格行

实现原理说明

整个功能的实现核心分为三个部分:首先通过DOM API获取页面中的复选框元素和表格行元素,然后给复选框绑定状态变化事件,最后在事件触发时根据复选框的选中状态,修改对应表格行的display样式属性来控制显示或隐藏。

核心DOM操作API

  • document.querySelectorAll():用于批量获取符合选择器的元素集合
  • addEventListener():给元素绑定事件监听函数
  • element.style.display:控制元素的显示状态,设置为none时元素隐藏,设置为空字符串时恢复默认显示

完整实现步骤

1. 构建基础HTML结构

首先我们需要准备一个包含复选框和表格的基础页面结构,复选框用于控制表格行的显示状态,表格的每一行对应一个数据项。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>动态隐藏表格行示例</title>
    <style>
        table {
            border-collapse: collapse;
            width: 80%;
            margin: 20px auto;
        }
        th, td {
            border: 1px solid #ddd;
            padding: 8px;
            text-align: center;
        }
        th {
            background-color: #f2f2f2;
        }
        .filter-area {
            width: 80%;
            margin: 20px auto;
        }
    </style>
</head>
<body>
    <div class="filter-area">
        <label>
            <input type="checkbox" class="status-filter" value="active" checked> 显示启用状态
        </label>
        <label>
            <input type="checkbox" class="status-filter" value="inactive" checked> 显示停用状态
        </label>
    </div>
    <table>
        <thead>
            <tr>
                <th>ID</th>
                <th>名称</th>
                <th>状态</th>
            </tr>
        </thead>
        <tbody>
            <tr data-status="active">
                <td>1</td>
                <td>商品A</td>
                <td>启用</td>
            </tr>
            <tr data-status="inactive">
                <td>2</td>
                <td>商品B</td>
                <td>停用</td>
            </tr>
            <tr data-status="active">
                <td>3</td>
                <td>商品C</td>
                <td>启用</td>
            </tr>
            <tr data-status="inactive">
                <td>4</td>
                <td>商品D</td>
                <td>停用</td>
            </tr>
        </tbody>
    </table>
    <script src="script.js"></script>
</body>
</html>

2. 编写JavaScript逻辑代码

接下来我们编写核心的JavaScript代码,实现复选框状态变化时动态隐藏或显示对应的表格行。

// 获取所有状态筛选复选框
const filterCheckboxes = document.querySelectorAll('.status-filter');
// 获取表格所有数据行
const tableRows = document.querySelectorAll('tbody tr');

// 定义处理表格行显示隐藏的函数
function handleRowDisplay() {
    // 先获取所有选中的复选框对应的状态值
    const checkedStatuses = Array.from(filterCheckboxes)
        .filter(checkbox => checkbox.checked)
        .map(checkbox => checkbox.value);
    
    // 遍历所有表格行,根据状态判断是否显示
    tableRows.forEach(row => {
        // 获取当前行的状态属性值
        const rowStatus = row.getAttribute('data-status');
        // 如果当前行的状态在选中的状态列表中,显示该行,否则隐藏
        if (checkedStatuses.includes(rowStatus)) {
            row.style.display = '';
        } else {
            row.style.display = 'none';
        }
    });
}

// 给每个复选框绑定change事件
filterCheckboxes.forEach(checkbox => {
    checkbox.addEventListener('change', handleRowDisplay);
});

// 页面加载完成后先执行一次,初始化显示状态
window.addEventListener('DOMContentLoaded', handleRowDisplay);

代码逻辑解析

上述代码中,我们首先通过querySelectorAll获取了所有的筛选复选框和表格数据行,避免后续重复查询DOM。然后定义了handleRowDisplay函数作为核心处理逻辑:

该函数会先收集所有处于选中状态的复选框对应的状态值,再遍历每一行表格数据,读取行上自定义的data-status属性,判断该状态是否在选中的状态列表中,从而决定行的显示或隐藏。

给每个复选框绑定change事件后,只要用户切换复选框的选中状态,就会触发handleRowDisplay函数重新计算所有行的显示状态。最后在页面DOM加载完成后执行一次该函数,保证初始显示状态和复选框的默认选中状态一致。

注意事项

  • 表格行的自定义属性data-status需要和复选框的value值对应,否则无法正确匹配
  • 如果表格数据是动态加载的,需要在数据渲染完成后再执行绑定事件和初始化显示的逻辑
  • 隐藏行使用display: none而不是visibility: hidden,前者会让元素不占据页面空间,后者只是不可见但仍占位置
  • 如果页面中有多个表格需要类似功能,可以把逻辑封装成可复用的函数,通过传入不同的选择器参数适配不同场景

JavaScriptDOM操作表格行隐藏复选框状态前端交互修改时间:2026-07-08 01:54:27

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。