js简单实现全选功能

<style>
		td,th {
			border: 1px solid #ccc;
		}
		table {
            border-collapse: collapse;
            border-spacing: 0;
            border: 1px solid #c0c0c0;
            width: 300px;
        }
	</style>

	 <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>iPhone8</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">

	<script>
		// 全选按钮
		// 获取子按钮数组
		var checkboxs=document.getElementById('j_tb');
		var inputs=checkboxs.getElementsByTagName('input');

		// 获取父按钮
		var j_cbAll=document.getElementById('j_cbAll');
		var btn=document.getElementById('btn');
		j_cbAll.onclick=function () {
			for(var i=0;i<inputs.length;i++){
				if(inputs[i].type==='checkbox'){					
					inputs[i].checked=this.checked;
				}
			}
		}
		// 解决点击子按钮后全选按钮一致勾选的bug
		//  点击子按钮时进行判断,循环子按钮是否被选中,有一个未选中则父按钮不选中,若全选中则选中
		for(var i=0;i<inputs.length;i++){
			var input=inputs[i];
			if(input.type!=='checkbox'){					
				continue;
			}
			// 点击子按钮时,如果子按钮全被选定,父按钮就被选中
			input.onclick=function(){
				checkAll();
			}
		}
		// 根据子按钮状态来给与父按钮状态
			function checkAll(){
				var isAll=true;
				for(var i=0;i<inputs.length;i++){
					var input=inputs[i];
					if(input.type!=='checkbox'){
						continue;
					}
					if(!input.checked){
						isAll=false;
					}
				}
				j_cbAll.checked=isAll;
			}
		// 反选
		btn.onclick=function () {
			for(var i=0;i<inputs.length;i++){
				if(inputs[i].type==='checkbox'){					
					inputs[i].checked=!inputs[i].checked;				
				}
			}
			// 解决点击反选按钮时,子按钮全部选中的情况下父按钮不选定的bug
			// 需要判断全部子按钮的状态	
			checkAll();		
		}
	</script>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值