全选反选按钮

<!DOCTYPE html>

<html>

<head lang="en">

<meta charset="UTF-8">

<title></title>

<style>

* {

padding: 0;

margin: 0;

}

.wrap {

width: 300px;

margin: 100px auto 0;

}

table {

border-collapse: collapse;

border-spacing: 0;

border: 1px solid #c0c0c0;

width: 300px;

}

th,td {

border: 1px solid #d0d0d0;

color: #404060;

padding: 10px;

}

th {

background-color: #ff3040;

font: bold 16px "微软雅黑";

color: #fff;

}

td {

font: 14px "微软雅黑";

}

tbody tr {

background-color: #f0f0f0;

}

tbody tr:hover {

cursor: pointer;

background-color: #fafafa;

}

#btn {

margin-top: 10px;

}

</style>

</head>

<body>

<div class="wrap">

<table>

<thead>

<tr>

<th><input type="checkbox" id="j_cbAll" /></th>

<th>商品</th>

<th>价钱</th>

</tr>

</thead>

<tbody id="j_tb">

<tr>

<td><input type="checkbox" /></td>

<td>iPhone13</td>

<td>8000</td>

</tr>

<tr>

<td><input type="checkbox" /></td>

<td>iPad Pro</td>

<td>5000</td>

</tr>

<tr>

<td><input type="checkbox" /></td>

<td>iPad Air</td>

<td>2000</td>

</tr>

<tr>

<td><input type="checkbox" /></td>

<td>Apple Watch</td>

<td>2000</td>

</tr>

</tbody>

</table>

<input type="button" value=" 反 选 " id="btn">

</div>

<script>

// 1 全选

// 1.1 获取父checkbox,注册点击事件

var j_cbAll = document.getElementById('j_cbAll')

var j_tb = document.getElementById('j_tb')

console.log(j_tb)

var ipts = j_tb.getElementsByTagName('input')

var btn = document.getElementById('btn')

j_cbAll.onclick = function() {

// 让子的checkbox的选中状态,和父checkbox的选中状态一致

for (var i = 0; i < ipts.length; i++) {

ipts[i].checked = j_cbAll.checked

}

}

// 1.2 找到所有子的checkbox,让这些checkbox的状态跟父checkbox保持一致

// 2 当点击子的checkbox,如果所有的子的checkbox都被选中了,让父的checkbox也选中

// 如果有一个子的checkbox没有被选中,父的checkbox也不被选中

// 此处的循环,是遍历所有子的checkbox,注册点击事件

function fn() {

var j_cbAllChecked = true

for(var i = 0; i < ipts.length; i++) {

if(!ipts[i].checked) {

j_cbAllChecked = false

}

}

j_cbAll.checked = j_cbAllChecked

}

for(var i = 0; i < ipts.length; i++) {

ipts[i].onclick = function() {

fn()

}

}

btn.onclick = function() {

for(var i = 0; i < ipts.length; i++) {

ipts[i].checked = !ipts[i].checked

fn()

}

}

// 判断是否是checkbox

// 结束当前循环,继续下一次循环

// 给子的checkbox注册点击事件

// 判断父的checkbox的状态 封装成函数

// 假设所有的子的checkbox都被选中

</script>

</body>

</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值