排他思想:就是排除掉其他的(包括自己),然后再给自己设置想要实现的效果。总而言之,排他思想的实现步骤就是所有元素全部清除再设置当前元素。

大白话---简单总结:干掉兄弟,复活自己

使用场景:1.Tab栏效果切换 2. 轮播图下方高亮小圆点 3.按钮的选择 4.一组同类便签中(如li标签,span标签,div标签),其中一个便签需要实现某一个样式.就可以使用  for循环  清除所需要的样式,再添加自己需要的样式

排他思想步骤:1.获取元素-------利用for循环获取

利用事件委托(冒泡原理)

2.注册事件(常见的事件:鼠标事件,键盘事件,焦点事件,文本事件)

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

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

注意点:顺序不能颠倒(先移除,后添加)

举例子 如下:

<body><div class="domestic"><div class="clearfix"><span class="active" data-id="0">登高踏青</span><span data-id="1">小憩温泉</span><span data-id="2">天然氧吧</span><span data-id="3">草原撒欢</span></div></div><script>/* 思路分析:事件源:span 事件类型:点击事件 click事件处理程序 排他思想*///获取元素const span = document.querySelectorAll('span')//利用for循环  for(let i = 0; i<arr.length; i++) {// console.log(i)//注册事件span[i].addEventListener('click',function(){//排他思想 先移除document.querySelector('.active').classList.remove('active')//再添加span[i].classList.add('active')})}</script>

特殊情况   没有要移除的样式,但是我们要添加我们想要的样式如下

不允许改变结构的情况下,可以想象的有这个样式,按照排他思想走下去  ,但是这里就得加判断了

<!DOCTYPE html>
<html><head lang="en"><meta charset="UTF-8"><title></title><style type="text/css">* {padding: 0;margin: 0;}ul {list-style-type: none;}.parentWrap {width: 200px;text-align: center;margin: 50px auto auto;}.menuGroup {border: 1px solid #999;background-color: green;}.groupTitle {display: block;height: 20px;line-height: 20px;font-size: 16px;border-bottom: 1px solid #ccc;cursor: pointer;}.menuGroup>div {height: 200px;background-color: #fff;display: none;}/* 注意看这里,可以采用类名的形式直接实现 *//* 思路: 点哪个 li ,哪个 li 添加 active 这个类,其余 li移除类 */.parentWrap .active span {/* 如果li添加active类,则 span 就改为红色 */background-color: red;}.parentWrap .active div {/* 如果当前li 添加 active 类,则 里面的div 就显示 */display: block;}</style></head><body><ul class="parentWrap"><li class="menuGroup"><span class="groupTitle">标题1</span><div>我是弹出来的div1</div></li><li class="menuGroup"><span class="groupTitle">标题2</span><div>我是弹出来的div2</div></li><li class="menuGroup"><span class="groupTitle">标题3</span><div>我是弹出来的div3</div></li><li class="menuGroup"><span class="groupTitle">标题4</span><div>我是弹出来的div4</div></li></ul><script>/* 思路分析:事件源 :li事件类型 : 点击事件事件处理程序 : 颜色变红  位置发生变化利用事件委托*///获取元素const list = document.querySelectorAll('li')//遍历for (let i = 0; i < list.length; i++) {//注册事件list[i].addEventListener('click', function () {// 先 移除 在添加const ac = document.querySelector('.active')//如果没有active这个类   不移除 也不会报错if (ac) {ac.classList.remove('active')}//当前追加 activethis.classList.add('active')})}</script></body></html>

总结:排他思想,先移除样式,在添加样式(顺序不能反)

编程思维---排他思想相关推荐

  1. 深入理解Golang 编程思维和工程实战

    | 导语 Golang 的一些编程思维和思想,以及总结一些常见的优雅编程实战技巧 目录 一 Golang 编程思维 二 Golang 高级编码技巧 1 优雅的实现构造函数编程思想 2 优雅的实现继承编 ...

  2. Golang 编程思维和工程实战

    Golang 的一些编程思维和思想,以及总结一些常见的优雅编程实战技巧. 作者:allendbwu,腾讯 PCG 后台开发工程师 一 Golang 编程思维 首先,我们先来看下最基本的,就是 Gola ...

  3. 『 编程思维』之我见

    编程思维,对于一个开发人员来说是必备的,但凡能让应用跑起来,不管应用的大小,优劣,说明这个开发人员都具有编程思维,毕竟程序认可了这个开发人员逻辑,能启动起来. 小到几行代码,一个小的桌面应用:大到一个 ...

  4. 语言编程思维陈萌_这本书告诉你,计算机为何能读懂人类语言,编程思维让你更聪明...

    在这个互联网时代,我们出门购物.拍照.打电话.浏览信息,只需要带上一部智能手机就可以了.如果在20年前,要实现这些功能,需要带一大堆东西.如今,我们口袋里的这台计算机,和50年前送宇航员上月球的那台计 ...

  5. java一个方法排他调用_Java编程实现排他锁代码详解

    一 .前言 某年某月某天,同事说需要一个文件排他锁功能,需求如下: (1)写操作是排他属性 (2)适用于同一进程的多线程/也适用于多进程的排他操作 (3)容错性:获得锁的进程若Crash,不影响到后续 ...

  6. 8种提升程序猿编程能力的方法+编程思维四个核心:分解、抽象、模式识别和算法

    8种提升程序猿编程能力的方法 对于程序员来说,提高自己的编程能力,算是给自己定的职业发展目标之一,不过定一个成为编程大神的目标很容易,具体做起来可能就不是一件简单的事了.首先,既然决定"我要 ...

  7. 世界读书日:带你走近Go语言编程思维

    经过十几年的演化和发展,Go语言在全世界范围内已经拥有了百万级别的拥趸,在这些开发者当中,除了一部分新入行的编程语言初学者之外,更多的是从其他编程语言阵营转过来的开发者.由于Go语言上手容易,在转Go ...

  8. 「编程思维」究竟是一种什么思维?

    首先,以下思维方法(或者套路.模式等)是编程所必需的,但我认为不应该被阐释为编程思维的内涵: 1.框架思维 写一个软件,需要搭架构:写一段程序,需要有一个大体框架.如同建一栋楼,需要首先搭脚手架.显然 ...

  9. 深度解析“编程思维”:从容迎接新时代的能力神器

    人的财富也好,幸福度也好,本质上都是"思维模式的变现":关于思维的论述很多了,那么,有没有什么思维能力,很容易被忽略,却又非常实用且重要呢?有,它就是-- "编程思维&q ...

最新文章

  1. 露天下的云端信标组比赛
  2. redis06----消息订阅
  3. JS —— 存取器属性get()和set()
  4. android 恢复短信 失败,解决安卓手机发送短信失败的方法
  5. 交互式多模型_论文深度提升的万金油方法——多属性决策 Ⅱ
  6. Luogu1515 青蛙的约会
  7. weblogic部署war包
  8. 中台方法论及案例集合
  9. 人体神经网络分布图高清,周围神经组成及分布
  10. 华为手机更换第三方桌面
  11. stata基于cox回归制作临床决策曲线
  12. 基于Ogre1.9开发的3D场景编辑器
  13. Android最新技术-Android11周
  14. 储存profiles是什么意思_save profile是什么意思
  15. 容联云通讯发送短信java实现
  16. windows 安装pyenv做python环境控制(极其简单)
  17. 人脸识别几个解决方案分析与测评
  18. 论网站按钮的设计艺术与生命周期
  19. 2020_KDD_Dual Channel Hypergraph Collaborative Filtering
  20. Nordic系列芯片讲解五( Nordic sdk中nrf_drv_twi的使用)

热门文章

  1. 办公小技巧1:使用adb命令在电脑与手机之间传输文件
  2. HOJ 1276 士兵队列训练问题(stl, 水题)
  3. 谈谈亲历的WMS、MES与ERP的集成之路
  4. Redis 中的 集合(Set) SCARD:获取集合包含的元素数量
  5. 4递归实现阶乘计算器 5递归实现TreeView绑定表MenuTree
  6. 用c语言写抽奖大转盘,iOS抽奖大转盘的二种实现方法
  7. 苹果手机上网很慢_手机4G信号满格,上网速度却很慢?原来都是它们在“搞鬼”...
  8. 使用百度AI将语音转换成文字(JAVA)
  9. Wishbone B3总线Generic RAM写法
  10. 参加计算机培训典型材料,计算机应用专业典型学员事迹材料