JS实现多选框的操作
在JavaScript中,操作多选框是一项常见的任务,尤其是在创建交互式Web页面时。多选框(`<input type="checkbox">`)允许用户选择一个或多个选项。本篇文章将详细讲解如何使用JS实现多选框的各种操作,包括全选、反选以及自定义样式。 HTML部分创建了一个包含多个水果名称的列表,每个水果名称前都有一个复选框。此外,还有两个特殊复选框,一个用于全选/非全选所有水果,另一个用于反选当前已选中的水果: ```html <div class="container"> <h3>请选择你最喜欢吃的水果(多选)</h3> <ul> <li><input type="checkbox">苹果</li> <li><input type="checkbox">雪梨</li> ... </ul> <div class="checkinAll"> <input type="checkbox" id="checkAll">全选/非全选 <input type="checkbox" id="checkTurn">反选 </div> </div> ``` CSS部分则为这些元素添加样式,使布局更美观,并定义了未选中和选中状态下的复选框样式: ```css .container { width: 300px; margin: 10px auto; } ... input[type='checkbox'] { width: 20px; height: 20px; vertical-align: middle; cursor: pointer; -webkit-appearance: none; border: 1px solid #666; border-radius: 3px; } input[type='checkbox']:checked { background-image: url(./select.png); background-repeat: no-repeat; background-position: center center; background-size: 100% 100%; outline: none; } ... ``` 接下来是JavaScript部分,它通过DOM操作来实现功能。这里使用了一个立即执行的函数表达式,以避免污染全局作用域: ```javascript (function() { const list_node = document.getElementsByTagName('li'); const ul_node = document.getElementsByTagName('ul')[0]; const colorArr = ['rgb(255,235,205)', 'rgb(255,240,245)', 'rgb(255,211,155)']; const check_nodes = ul_node.getElementsByTagName('input'); const checkAll = document.getElementById('checkAll'); const checkTurn = document.getElementById('checkTurn'); // 设置初始背景颜色 for (let i = 0; i < list_node.length; i++) { list_node[i].style.backgroundColor = colorArr[i % colorArr.length]; } // 全选/非全选事件处理 checkAll.addEventListener('change', function() { for (let i = 0; i < check_nodes.length; i++) { check_nodes[i].checked = this.checked; } }); // 反选事件处理 checkTurn.addEventListener('change', function() { for (let i = 0; i < check_nodes.length; i++) { check_nodes[i].checked = !check_nodes[i].checked; } }); })(); ``` 在这个JS代码中,我们首先获取了所有`<li>`元素、`<ul>`元素、所有复选框、全选和反选按钮。然后,为全选按钮(`checkAll`)和反选按钮(`checkTurn`)添加了事件监听器。当全选按钮被改变时,遍历所有复选框并设置它们的`checked`属性与全选按钮的状态相同。反选按钮的事件处理函数则是对所有复选框的`checked`属性取反,从而实现反选功能。 通过这样的JavaScript实现,我们可以轻松地控制页面上的多选框状态,增强用户的交互体验。同时,也可以根据需求进一步扩展,比如添加验证、统计已选项目数量等功能。