使用JS及jquery两种方法完成复选框的全选,全不选,反选功能

一、JS实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="jquery-3.3.1.min.js"></script>
</head>
<body>
<button id="allSelect">全选</button>
<button id="cancelSelect">全不选</button>
<button id ="reverseSelect">反选</button>
<br>
<input type="checkbox" value="1">1 <br>
<input type="checkbox" value="2">2 <br>
<input type="checkbox" value="3">3 <br>
<input type="checkbox" value="4">4 <br>
<input type="checkbox" value="5">5 <br>
<input type="checkbox" value="6">6 <br>

<script>
    window.onload = function () {
       var inputs = document.querySelectorAll('input');
       $('allSelect').onclick = function(){
           for( var i=0; i<inputs.length; i++){
               inputs[i].checked = true;
           }
       };
        $('cancelSelect').onclick = function(){
            for( var i=0; i<inputs.length; i++){
                inputs[i].checked = false;
            }
        };
        $('reverseSelect').onclick = function(){
            for( var i=0; i<inputs.length; i++){
                inputs[i].checked =  !inputs[i].checked;
            }
        }

    };

    function $(id) {
        return typeof id === 'string'? document.getElementById(id) : null;
    }

</script>
</body>
</html>

二、Jquery实现

注意点:一开始我是用attr方法写的,但是发现只有一开始的时候有用,如果改变了其中复选框的状态,事件就没有作用了。

后来发现用prop方法可以实现,所以这里说下attr()和prop()之间的区别;

attr():获取匹配的元素集合中的第一个元素的属性的值 或 设置每一个匹配元素的一个或多个属性。

prop():获取匹配的元素集中第一个元素的属性(property)值或设置每一个匹配元素的一个或多个属性。

attr()传入的是attributeName,而prop()传入的是propertyName;

在这里,我们可以将attribute理解为“特性”,property理解为“属性”从而来区分俩者的差异。

jquery中attr和prop的区别介绍:

•对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。

•对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="jquery-3.3.1.min.js"></script>
</head>
<body>
<button id="allSelect">全选</button>
<button id="cancelSelect">全不选</button>
<button id ="reverseSelect">反选</button>
<br>
<input type="checkbox" value="1">1 <br>
<input type="checkbox" value="2">2 <br>
<input type="checkbox" value="3">3 <br>
<input type="checkbox" value="4">4 <br>
<input type="checkbox" value="5">5 <br>
<input type="checkbox" value="6">6 <br>

<script>
$(function () {
     $('#allSelect').click(function () {
         $('input').prop('checked',true);
     });
     $('#cancelSelect').click(function () {
         $('input').prop('checked',false);
     });
     $('#reverseSelect').click(function () {
         $('input').each(function () {
             console.log(!$(this).prop('checked'))
             $(this).prop('checked',!$(this).prop('checked'))
         })
     });
 })

</script>
</body>
</html>

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值