全选练习

全选练习
js中=的区别

===是全等号,表示恒等的意思。==是等同的意思。==使用时,如果等号两边的值类型不同会先进行类型转换,才能比较。===使用时,是不需要做类型转换的,如果值不同,就一定不相等。

1=="1"//true
1==="1"//false
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>全选练习</title>

    <script type="text/javascript">

        window.onload = function () {
            //所有按钮的name属性相同,全选按钮可以直接获取改组复选框放在类数组里
            var itemsbtn = document.getElementsByName("items");
            //获取全选/全不选的复选框
            var checkedAllBox = document.getElementById("checkedAllBox");

            /**
             * 全选按钮
             *  -点击按钮四个多选框全部被选中
             */
                //#checkedAllBtn
            var checkAllBtn = document.getElementById("checkedAllBtn");
            checkAllBtn.onclick = function () {
                for (var i = 0; i < itemsbtn.length; i++) {
                    //每个复选框默认选中属性checked ture被选中,false不被选中,直接写checked也是被选中
                    itemsbtn[i].checked = true;
                }
                //全选中,上边跟着变
                checkedAllBox.checked = true;
            };

            //#checkedNoBtn
            var checkedNoBtn = document.getElementById("checkedNoBtn");
            checkedNoBtn.onclick = function () {
                for (var i = 0; i < itemsbtn.length; i++) {
                    //每个复选框默认选中属性checked ture被选中,false不被选中,直接写checked也是被选中
                    itemsbtn[i].checked = false;
                }
                //全不选中,上边跟着变
                checkedAllBox.checked = false;
            };

            //#checkedRevBtn反选
            var checkenRevBtn = document.getElementById("checkedRevBtn");
            checkenRevBtn.onclick = function () {
                //默认checkedAllBox设置为选中状态.如果第一次取消选中判断,取消勾选,第二次还是默认勾选,判断不改变默认值
                checkedAllBox.checked = true;

                for (var i = 0; i < itemsbtn.length; i++) {
                    //每个复选框默认选中属性checked ture被选中,false不被选中,直接写checked也是被选中
                    //反选直接把checked值修改为反的
                    if (itemsbtn[i].checked) {
                        itemsbtn[i].checked = false;
                        checkedAllBox.checked = false;
                    } else {
                        itemsbtn[i].checked = true;

                    }
                }


            };

            //#sendBtn
            var sendBtn = document.getElementById("sendBtn");
            sendBtn.onclick = function () {
                for (var i = 0; i < itemsbtn.length; i++) {
                    //打印每个选中复选框的值打印
                    if (itemsbtn[i].checked) {
                        alert(itemsbtn[i].value);
                    }
                }
            };

            //#checkedAllBox
            checkedAllBox.onclick = function () {
                /**
                 * 该复选框选中,其他四个复选框也被选中,如果未被选中,其他四个也未被选中
                 */
                for (var i = 0; i < itemsbtn.length; i++) {
                    /*   if (checkedAllBox.checked) {
                          itemsbtn[i].checked = true;
                       }
                       else {itemsbtn[i].checked = false;}
                   }*/
                    //itemsbtn[i].checked = checkedAllBox.checked;
                    //在事件响应中,响应函数是给谁绑定的,this就指向谁。
                    itemsbtn[i].checked = this.checked;
                }

            };
            /**
             *  当四个复选框按钮状态改变时,最上方的复选按钮应该发生改变,比如取消一个
             *  那么上方的状态应该由全选变成非全选,
             */
            //items 为四个多选框绑定单击响应函数
            for (var i = 0; i < itemsbtn.length; i++) {
                //为每个复选框绑定函数
                itemsbtn[i].onclick = function () {
                    //默认checkedAllBox设置为选中状态.如果第一次取消选中判断,取消勾选,第二次还是默认勾选,判断不改变默认值
                    checkedAllBox.checked = true;
                    //判定四个复选框是否被全选
                    for (var j = 0; j < itemsbtn.length; j++) {
                        if (itemsbtn[j].checked == false) {
                            checkedAllBox.checked = false;
                            //一旦进入判断为false,结果已经出来后边的不用执行,提升效率
                            break;
                        }
                    }

                };
            }


        };

    </script>


</head>
<body>

<form action="" method="post">
    你爱好的运动是?<input id="checkedAllBox" type="checkbox"/>全选/全不选

    <br/>
    <input name="items" type="checkbox" value="足球"/>足球
    <input name="items" type="checkbox" value="篮球"/>篮球
    <input name="items" type="checkbox" value="羽毛球"/>羽毛球
    <input name="items" type="checkbox" value="乒乓球"/>乒乓球
    <br/>
    <input id="checkedAllBtn" type="button" value="全 选"/>
    <input id="checkedNoBtn" type="button" value="全不选"/>
    <input id="checkedRevBtn" type="button" value="反 选"/>
    <input id="sendBtn" type="button" value="提 交"/>


</form>

</body>
</html>

细节方面:

1.重复使用的变量设置了全局变量

2.最上方的全选/全不选框要随着下方四个复选框变化而变化,如果刚开始是全选,有一个变化为非选中,则上方标签要改变,如果同时改变该标签两次回复原位,标签又要恢复。这个地方首先要给每个标签按钮绑定函数判断,其次还要有标志,默认为选中,两次改变等于没变。

3最上方的全选/全不选框要随着下方全选,全不选按钮变化。这里就是需要设置默认值,当下方全选按钮点击,上方复选框checked值为true,下方全不选,为false.

4.最上方的全选/全不选框要随着下方反选按钮变化,开始都未选中,直接反选,再次反选,最上方复选框要改变。这里就要用到第二条里说到的判断,但是本身有一个for循环,简化程序,直接将标志放在函数开始部分 ,然后将修改标志语句checkedAllBox.checked = false;放入判断语句。

在事件响应中,响应函数是给谁绑定的,this就指向谁。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值