Advertisement

前端DOM-排他思想

阅读量:

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、排他思想是什么?

  • 二、案例:百度换肤

    • 1.案例分析
    • 2.介绍
    • 3.代码块
  • 表格隔行变色

    • 1.案例分析
    • 业务需求

一、排他思想是什么?

如果有同一组元素,我们想要某一个元素实现某种样式, 需要用到循环的排他思想算法:

  1. 所有元素全部清除样式(干掉其他人)
  2. 给当前元素设置样式 (留下我自己)
  3. 注意顺序不能颠倒,首先干掉其他人,再设置自己

二、案例:百度换肤

1.案例分析

1.这个案例练习的是给一组元素注册事件
2.给4个小图片利用循环注册点击事件
3.当我们点击了这个图片,让我们页面背景改为当前的图片
4.核心算法: 把当前图片的src 路径取过来,给 body 做为背景即可

2.介绍

录像1

3.代码块

复制代码
    <body>
    <ul class="baidu">
        <li><img src="./images/1.jpg" alt=""></li>
        <li><img src="./images/2.jpg" alt=""></li>
        <li><img src="./images/3.jpg" alt=""></li>
        <li><img src="./images/4.jpg" alt=""></li>
    </ul>
    
    <script>
        // 获取元素
        var images = document.querySelector('.baidu').querySelectorAll('img');
        // 事件
        for (var i = 0; i < images.length; i++) {
            images[i].onclick = function() {
                // this.src 是鼠标点到那就是那的路径
                // 获取body document.body  
                document.body.style.backgroundImage = 'url(' + this.src + ')'
            }
        }
    </script>
    
    </body>

表格隔行变色

1.案例分析

1.全选和取消全选做法: 让下面所有复选框的checked属性(选中状态) 跟随 全选按钮即可
2.下面复选框需要全部选中, 上面全选才能选中做法: 给下面所有复选框绑定点击事件,每次点击,都要循环查看下面所有的复选框是否有没选中的,3.如果有一个没选中的, 上面全选就不选中。
可以设置一个变量,来控制全选是否选中

业务需求

点击上面全选复选框,下面所有的复选框都选中(全选)
再次点击全选复选框,下面所有的复选框都不中选(取消全选)
如果下面复选框全部选中,上面全选按钮就自动选中
如果下面复选框有一个没有选中,上面全选按钮就不选中
所有复选框一开始默认都没选中状态

复制代码
    <script>
        // 1. 全选和取消全选的思想: 让下面的复选框的checked属性(选中状态) 跟随 全选按钮即可
        // 获取元素
        var j_cbAll = document.getElementById('j_cbAll'); // 全选按钮
        //下面所有的复选框
        var j_tbs = document.getElementById('j_tb').getElementsByTagName('input');
        // 注册事件
        j_cbAll.onclick = function() {
                // this.checked 它可以得到当前复选框的选中状态如果是true 就是选中,
                // 如果是false就是没选中
                // console.log(this.checked);
                for (var i = 0; i < j_tbs.length; i++) {
                    // 下面所有的复选框给 父级控制
                    j_tbs[i].checked = this.checked;
                }
            }
            // 下面复选框全选种对应 上面的选中  
        for (var i = 0; i < j_tbs.length; i++) {
            j_tbs[i].onclick = function() {
                // flag = true; 来控制是否被选中
                var flag = true;
                // 每次点击下面的复选框都要循环检查4个小按钮是否全被选种
                for (var j = 0; j < j_tbs.length; j++) {
                    // 如果有一个没被选上就是false
                    if (!j_tbs[j].checked) {
                        flag = false;
                        break; // 只要有一个没被选中,则就无需循环,退出即可
                    }
                }
                j_cbAll.checked = flag;
            }
        }
    </script>

全部评论 (0)

还没有任何评论哟~