JS中排他思想(算法)和案例演示

22 阅读2分钟

前言

下面所讲的概念只是简单让大家在脑海中有一个基本的概念,如果哪里有误,或者理解不了,也欢迎朋友们指正或讨论。

正文

我们通常在浏览网页的时候,会出现多个按钮同时存在的情况,需要添加鼠标事件,如鼠标点击,鼠标经过,鼠标划走等,用来进行页面的一些视觉效果。

但是,总不能将所有的按钮都进行一个事件的添加吧。所以,为了偷懒,我们就可以使用for循环来进行简化

例子

这里我们写一个点击按钮的事件,点击的按钮变成粉色,其他均不变色。PINK

利用了排他算法:(干掉所有人,复活选中的)

1.所有元素全部清除样式

2.给当前元素设置样式

3.注意顺序不能颠倒,首先要把所有干掉,再设置。

HTML:

<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
 
<body>
    <button>按钮1</button>
    <button>按钮2</button>
    <button>按钮3</button>
    <button>按钮4</button>
    <button>按钮5</button>
</body>

</html>

JS:

 <script>
        // 获取到所有按钮元素
        //不建议使用TagName,这里使用是懒虫上身,Id是一种好的选择
        var btns = document.getElementsByTagName('button');
       
        // btns得到的是伪数组  里面的每一个元素 btns[i]
        for (var i = 0; i < btns.length; i++) {///循环一遍,将所有的按钮都添加到事件
            btns[i].onclick = function() {
            
                // 先去除所有人的颜色  即干掉所有人
                for (var i = 0; i < btns.length; i++) {
                    btns[i].style.backgroundColor = '';
                }
                
                // 然后设当前元素的背景颜色为pink 即留下我自己
                this.style.backgroundColor = 'pink';///this指向调用点击事件的那个按钮
            }
        }
    </script>

一些心得

我个人是这样认为的,任何一种代码,都是为了实现某种功能而使用的,是先提出需求(别讲没有需求,没有需求就去创造需求),再根据需求使用代码求解。没有最完美只有更完美,这才是我们程序员所要追求的目标吧

byby