排他思想.

这篇博客介绍了如何使用JavaScript实现排他思想,即点击元素时清除其他元素样式并给当前元素设置样式。通过循环遍历按钮或图片元素,绑定点击事件,实现点击某一按钮或图片时,其背景色改变,其他元素样式恢复默认。同时,还以百度换肤为例,展示了点击图片更改页面背景的实现方法,通过获取点击图片的src作为body的背景图片。
摘要由CSDN通过智能技术生成

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

1.所有元素全部清除样式(干掉其他人)

2.给当前元素设置样式(留下我自己)

3.注意顺序不能颠倒,首先干掉其他人,再设置自己

<button>按钮1</button>
<button>按钮2</button>
<button>按钮3</button>
<button>按钮4</button>
<button>按钮5</button>
<script>
  
  // 1.获取元素
        var btns = document.querySelectorAll('button')
        // 2. 循环遍历绑定事件
        for (var i = 0; i < btns.length; i++) {

            //onclick 当点击的时候,才会执行function内部代码
            //这里btns[i]表示给每一个按钮绑定事件
            // 3. 编写事件处理程序
            btns[i].onclick = function () {

                //1.先清空所有样式  干掉所有人
                for (var i = 0; i < btns.length; i++) {
                    btns[i].style.backgroundColor = ''
                }
                //2. 复活/留下  我自己
                this.style.backgroundColor = 'pink'
            }
        }
</script>

eg. 百度换肤

分析:

  1. 这个案例练习的是给一组元素注册事件
  2. 点击每张图片给图片加个带颜色的border边框,实现排他思想
  3. 给4个小图片利用循环注册点击事件
  4. 当我们点击了这个图片,让我们页面背景改为当前的图片
  5. 核心算法: 把当前图片的src 路径取过来,给 body 做为背景即可
<body>
    <ul class="baidu">
        <li><img src="images/1.jpg"></li>
        <li><img src="images/2.jpg"></li>
        <li><img src="images/3.jpg"></li>
        <li><img src="images/4.jpg"></li>
    </ul>
    <script>
        // 1. 获取元素 
        var imgs = document.querySelector('.baidu').querySelectorAll('img');
        // console.log(imgs);
        // 2. 循环注册事件 
        for (var i = 0; i < imgs.length; i++) {
            imgs[i].onclick = function() {
                // 2. 先干掉其他人
                for (var j = 0; j < imgs.length;j ++) {
                    imgs[j].style.border = ''
                }
                // 3. 留下我自己
                this.style.border = '2px solid pink'
                // this.src 就是我们点击图片的路径   images/2.jpg
                // console.log(this.src);
                // 把这个路径 this.src 给body 就可以了
                document.body.style.backgroundImage =  `url(${this.src})`;
            }
        }
    </script>
</body>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值