DOM对象之排他思想(算法)

【正点原子I.MX6U-MINI移植篇】Ubuntu-base根文件系统移植构建过程详解(四) 能不能在ARM板上运行Ubuntu呢?答案肯定是可以的,Ubuntu是Linux系统的一种,可以简单的将Ubuntu理解为一个根文件系统,和我们用busybox、buildroot制作的根文件系统一样。因此移植Ubuntu也就是将Ubuntu根文件系统移植到我们的开发板上。 阅读详情

目录

一、小例子(五个按钮)

二、全选按钮

三、tab栏切换

四、表格隔行换色


原理:

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

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

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

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

一、小例子(五个按钮)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <button>11</button>
    <button>12</button>
    <button>13</button>
    <button>14</button>
    <button>15</button>
    <script>
        var btns=document.getElementsByTagName('button')
        // console.log(btns);
        for(var i=0;i<btns.length;i++){
            btns[i].onclick=function(){
            //把所有的样式变成null
            for(var j=0;j<btns.length;j++){
                btns[j].style.backgroundColor='';
            }
            //保留点击的
                this.style.backgroundColor='blue';
            }
        }
    </script>
</body>
</html>

 

 

二、全选按钮

要求:

1. 点击上面全选复选框,下面所有的复选框都选中(全选)
2. 再次点击全选复选框,下面所有的复选框都不中选(取消全选)
3. 如果下面复选框全部选中,上面全选按钮就自动选中
4. 如果下面复选框有一个没有选中,上面全选按钮就不选中
5. 所有复选框一开始默认都没选中状态
<input type="checkbox" name="" id="ckAll"/> 全选
	  <ul class="ulstyle">
		    <li><input type="checkbox" name="" value="" /> 第一行</li>
		    <li><input type="checkbox" name="" value="" /> 第二行</li>
		    <li><input type="checkbox" name="" value="" /> 第三行</li>
			<li><input type="checkbox" name="" value="" /> 第四行</li>
	  </ul>
 <script>
	     var ckAll  = document.getElementById("ckAll");
		 var ckBoxs = document.querySelector(".ulstyle").getElementsByTagName("input");
		 //全选按钮添加单击事件
		 ckAll.onclick  = function(){
			    for(var i=0;i<ckBoxs.length;i++){
					ckBoxs[i].checked = this.checked;
				}
		 }
		 //如果全部被选全选按钮被选上
		 for(var i=0;i<ckBoxs.length;i++){
			 ckBoxs[i].onclick = function(){
				  var flag = true;//默认都选中
				 //判断每一个选中的状态
				 for(var j=0;j<ckBoxs.length;j++){
					 if(!ckBoxs[j].checked){
						 flag = false;
					 }
				 }
				 ckAll.checked = flag;
			 }

		 }
	  </script>

 

 

三、tab栏切换

要求:当鼠标点击上面相应的选项卡(tab),下面内容跟随变化

步骤:

①Tab栏切换有2个大的模块
②上的模块选项卡,点击某一个,当前这一个底色会是红色,其余不变(排他思想) 修改类名的方式
③下面的模块内容,会跟随上面的选项卡变化。所以下面模块变化写到点击事件里面。
④规律:下面的模块显示内容和上面的选项卡一一对应,相匹配。
⑤核心思路: 给上面的tab_list 里面的所有小li 添加自定义属性,属性值从0开始编号。
⑥ 当我们点击tab_list 里面的某个小li,让tab_con 里面对应序号的 内容显示,其余隐藏(排他思想)

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        
        li {
            list-style-type: none;
        }
        
        .tab {
            width: 978px;
            margin: 100px auto;
        }
        
        .tab_list {
            height: 39px;
            border: 1px solid #ccc;
            background-color: #f1f1f1;
        }
        
        .tab_list li {
            float: left;
            height: 39px;
            line-height: 39px;
            padding: 0 20px;
            text-align: center;
            cursor: pointer;
        }
        
        .tab_list .current {
            background-color: #c81623;
            color: #fff;
        }
        
        .item_info {
            padding: 20px 0 0 20px;
        }
        
        .item {
            display: none;
        }
    </style>
</head>
<body>
    <div class="tab">
        <div class="tab_list">
            <ul>
                <li class="current">商品介绍</li>
                <li>规格与包装</li>
                <li>售后保障</li>
                <li>商品评价(50000)</li>
                <li>手机社区</li>
            </ul>
        </div>
        <div class="tab_con">
            <div class="item" style="display: block;">
                商品介绍模块内容
            </div>
            <div class="item">
                规格与包装模块内容
            </div>
            <div class="item">
                售后保障模块内容
            </div>
            <div class="item">
                商品评价(50000)模块内容
            </div>
            <div class="item">
                手机社区模块内容
            </div>
        </div>
    </div>
    <script>
        var lis=document.querySelector('.tab_list').querySelectorAll('li');
        var items=document.querySelectorAll('.item');
        //for循环遍历所有的li
        for(var i=0;i<lis.length;i++){
            //开始给5个小li设置索引号
            lis[i].setAttribute('index',i);
            lis[i].onclick=function(){
                for(var j=0;j<lis.length;j++){
                    //把其他先消灭
                    lis[j].className='';
                }
                //保留自己
                this.className='current';
                //下面的显示内容模块
                var index=this.getAttribute('index');
                console.log(index);
                //干掉所有人 让其余的item 这些div 隐藏
                for(var i=0;i<items.length;i++){
                    items[i].style.display='';
                }
                //留下我自己 让对应的item显示出来
                items[index].style.display='block';
            }
        }
    </script>
</body>
</html>

 

 

四、表格隔行换色

思想:     ①用到新的鼠标事件 鼠标经过 onmouseover   鼠标离开 onmouseout

② 核心思路:鼠标经过 tr 行,当前的行变背景颜色, 鼠标离开去掉当前的背景颜色
③ 注意: 第一行( thead 里面的行)不需要变换颜色,因此我们获取的是 tbody 里面的行
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>表格隔行换色</title>
    <style>
        table {
            width: 800px;
            margin: 100px auto;
            text-align: center;
            border-collapse: collapse;
            font-size: 14px;
        }
        
        thead tr {
            height: 30px;
            background-color: skyblue;
        }
        
        tbody tr {
            height: 30px;
        }
        
        tbody td {
            border-bottom: 1px solid #d7d7d7;
            font-size: 12px;
            color: blue;
        }
        
        .bg {
            background-color: pink;
        }
    </style>
</head>
<body>
    <table>
        <thead>
            <tr>
                <th>代码</th>
                <th>名称</th>
                <th>最新公布净值</th>
                <th>累计净值</th>
                <th>前单位净值</th>
                <th>净值增长率</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>003526</td>
                <td>农银金穗3个月定期开放债券</td>
                <td>1.075</td>
                <td>1.079</td>
                <td>1.074</td>
                <td>+0.047%</td>
            </tr>
            <tr>
                <td>003526</td>
                <td>农银金穗3个月定期开放债券</td>
                <td>1.075</td>
                <td>1.079</td>
                <td>1.074</td>
                <td>+0.047%</td>
            </tr>
            <tr>
                <td>003526</td>
                <td>农银金穗3个月定期开放债券</td>
                <td>1.075</td>
                <td>1.079</td>
                <td>1.074</td>
                <td>+0.047%</td>
            </tr>
            <tr>
                <td>003526</td>
                <td>农银金穗3个月定期开放债券</td>
                <td>1.075</td>
                <td>1.079</td>
                <td>1.074</td>
                <td>+0.047%</td>
            </tr>
            <tr>
                <td>003526</td>
                <td>农银金穗3个月定期开放债券</td>
                <td>1.075</td>
                <td>1.079</td>
                <td>1.074</td>
                <td>+0.047%</td>
            </tr>
            <tr>
                <td>003526</td>
                <td>农银金穗3个月定期开放债券</td>
                <td>1.075</td>
                <td>1.079</td>
                <td>1.074</td>
                <td>+0.047%</td>
            </tr>
        </tbody>
    </table>
    <script>
        //1.获取元素 获取的是 tbody 里面所有的行
        var trs=document.querySelector('tbody').querySelectorAll('tr');
        //2.利用循环绑定注册事件
        for(var i=0;i<trs.length;i++){
            trs[i].onmouseover=function(){
                //排他思想
                // console.log(1);
                // for(var j=0;j<trs.length;j++){
                //     trs[j].className="";
                // }
                this.className="bg";
            }
            trs[i].onmouseout=function(){
                this.className='';
            }
        }

    </script>
</body>
</html>

 

 

总结:

排他思想 

1.排他思想应用场景 : 多个元素只能选中一个元素的场景 

2.排他思想实现思路:两种思路 循环排他 (万能的) : (1)循环干掉所有兄弟 (2)复活自己

 

 

【DIY】使用STM32及PID算法实现一个磁悬浮玩具 今天教大家来做一个磁悬浮玩具。 阅读详情

相关推荐

VLM,VLA,VLN的区别与联系

VLM 提供了理解世界的“眼睛和大脑”,VLN 赋予了这个智能体在空间中“移动的双腿”,而 VLA 则进一步赋予了它“灵巧的双手”来改变世界。三者共同构成了一个完整具身智能体的核心能力模块。

l0409044222的博客 1314

DOM之排它思想

当鼠标点击一个按钮时,该按钮背景颜色改变,其余按钮颜色不变;当鼠标点击另外一个按钮时,那个按钮背景颜色发生改变,其余按钮背景颜色恢复原样。(这里其余按钮背景颜色恢复原样,包括前面点击的变了色的按钮)同一组元素,某个元素要与其它元素之间形成与众不同,就会让它们变"普通",而自己变"闪耀",这就是排除他人,成就自己(假装这样理解0.0)01.给同组所有元素清除"闪光点"(利用循环)案例2排它思想之表格点击,点击表格,某一竖变为蓝色,其它变为白色。给所有元素绑定点击事件{案例排它思想之按钮点击。...

weixin_47075145的博客 320

YooAsset 2.2.12四层加密架构:跨平台资源安全实战指南

AssetBundle加密是Unity热更新安全的核心环节,其本质是通过算法、密钥管理与生命周期协同实现资源全链路防护。传统方案常陷于‘打包后加密’的误区,导致内存开销大、跨平台兼容差、逆向防护弱。YooAsset 2.2.12提出打包层、传输层、加载层、运行层四层防护架构,将加密前置到资源序列化前,并依托BundleHeader实现动态算法协商与密钥分发,显著提升iOS/Android/WebGL三端一致性。该方案兼顾AES-128等通用算法与SM4等国密支持,同时通过IMemoryDecryptor实现

weixin_32428571的博客 416

DOM--排他思想

排他思想在进行页面交互时经常用到,所谓排他思想,顾名思义就是其他元素无此样式效果或事件,只有当前操作的元素拥有。如果有同一组元素,我们想要某一个元素实现某种样式, 需要用到循环的排他思想算法: 1. 所有元素全部清除样式(干掉其他人) 2. 给当前元素设置样式 (留下我自己) 3. 注意顺序不能颠倒,首先干掉其他人,再设置自己接下来,以几个案例来更直观的介绍下该思想的核心点:需求: 1. 点击上面全选复选框,下面所有的复选框都选中(全选) 2. 再次点击全选复选框,下面所有的复选框都不中选(取消全选) 3.

JJ_Smilewang的博客 394

LSF实践专题(15):LSF队列优先级以及抢占功能初探

在LSF暂停作业时,会向作业发送一个SIGTSTP信号,并且将作业状态变成SSUSP(system suspend),表示被系统暂停,这时,最好是作业的应用能够捕获和处理SIGTSTP信号,否则,即使在LSF中,作业会被认为暂停了,并且释放了slots资源,但是在实际OS中,作业进程仍然在继续,并且不会释放CPU等计算资源。是指LSF自动将低优先级作业暂停(suspend),将空余出来的资源交给高优先级队列中的作业使用,等到高优先级队列的作业结束后,再将被暂停的作业恢复(resume)并继续运行。

richycn的博客 1920

【TestNG自动化测试框架详解】

TestNG是一款设计测试用例执行流程的测试框架。

weixin_43936332的博客 1542

排他思想(算法)

排他思想(算法) 给一组相同的元素添加相同的事件,利用for循环来实现。 代码验证 <button>按钮1</button> <button>按钮2</button> <button>按钮3</button> <button>按钮4</button> <button>按钮5</button> <script> // 1.

休思_J的博客 5311

如何使用Calibre PERC抽出 点到点/p2p 电阻

@[TOC](如何使用Calibre PERC抽点到点(p2p)电阻) 一、前言 需要实现的功能是从gds中抽出net的点到点的电阻。如下图这样。 二、准备工作 lvs rule pex rule(必要时可以自己定义RC rule) gds p2p点的坐标 定义prode.defs 因为p2p的点是变化的,所以每次prode定义都要重新出,对应的perc rule也是根据每个p2p点的定义来的,perc rule也是每次都要重新出。如果需要可以写一个脚本自动出这些定义文件。 PROBE_POINTS

kobayashiyou的博客 1万+

排他思想的理解

(2)子选框全部被选中后,全选框自动勾选(只要有一个子选框未选中则全选框不会被勾选)——表的内容。(1)鼠标点击全选框时,子选框全部被选中(取消时同理)2.子选框全部被选中后,全选框自动勾选(只要有一个子选框未选中则全选框不会被勾选)——表头。1.鼠标点击全选框时,子选框全部被选中(取消时同理)1.所有元素全部清除样式(干掉其他人)2.给当前元素设置样式(留下我自己)

acsweetest的博客 224

Boost电路双闭环控制MATLAB仿真

通过电流内环控制,我们可以改变目标平均电流基准值的大小来闭环改变占空比,再改变输出电压与电路电流,直到电路电流达到基准电流才达到稳态。但是我们的基准电流依旧是外部提供的,下边的电压外环控制就是电路自己计算基准电流。

Fourglsl的博客 5849

手把手教你用8位单片机IO口直接驱动WS2812灯带(附完整代码和避坑指南)

本文详细介绍了如何使用8位单片机IO口直接驱动WS2812灯带,包括硬件准备、时序生成、色彩引擎与特效算法的实现,以及调试技巧与性能优化。通过汇编语言优化和精确时序控制,实现高效的LED驱动和炫酷的彩虹灯效,适合嵌入式开发者和硬件爱好者参考。

weixin_42696271的博客 304

学习tab栏切换必备,快速上手排它算法

前言 之前学习Tab栏操作的时候,了解到一种新的算法思想(排它思想),趁着今天闲暇之余,写下这篇博客,希望可以给读者朋友们提供帮助。 算法简介 何为排他算法呢,简单点来说就是干掉所有人,留下我自己(干就完了),只要牢记这段口诀,相信学习起来就不会很难了!! 何时使用 当存在多个元素的情况下,我们需要给其中的一个元素设置样式(留下我自己),而其它元素则保持原来状态(干掉所有人),这时我们的排它思想就华丽登场了~~~ 案例效果 下面是我做的一个tab栏效果,请大家仔细观看其中的排它思想,注意观察上面文字的背景

她还会来吗的博客 254

基于ENVI完成影像的去云操作以及后续处理

利用ENVI完成重采样影像的去云操作 由于SNAP重采样之后的影像是分波段保存的,ENVI的波段运算工具一次也只能输出一个波段,所以去云的操作分波段进行,原理是掩膜法 下面是打开所有波段后的界面 去云的依据是以quality_scene_classification栅格文件为基础,该文件是哨兵2数据自带的场景质量分类图,包含12个级别,可以通过SNAP软件查看,如下图所示: 对于去云操作而言,我们只需要DARK_FEATURE_SHADOW(地形等),CLOUD_SHADOW(云阴影)、CL

lemon_tttea的博客 2万+

JS-Dom知识点总结

js的基本dom操作搭配小案例及学习心得

weixin_60537353的博客 967

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

排他思想&节点

案例 排他思想 如果有同一组元素,我们想要某一个元素实现某种样式,需要用到循环的排他思想算法 先找到所有的元素 消灭所有的元素样式,改成初始样式 然后留下自己,设置特定样式 注意:顺序不能颠倒,先消灭后自己 window.onload=function(){ // 【1】选择所有的相关元素 // .getElementsByTagName("li") var lis=document.querySelectorAll

ZJie0的博客 418

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

JavaScript--【JS】排他思想

排他思想 如果有同一组元素,我们想要某一个元素实现某种样式,需要用到循环的排他思想算法 先找到所有的元素 消灭所有的元素样式,改成初始样式 然后留下自己,设置特定样式 注意:顺序不能颠倒,先消灭后自己 window.onload=function(){ // 【1】选择所有的相关元素 // .getElementsByTagName("li") var lis=document.querySelectorAll(".

ZJie0的博客 558

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Web APIs第02天笔记——排他思想、自定义属性操作、节点操作

/ 1. 获取元素的属性值 // (1) element.属性 console . log(div . id);//(2) element.getAttribute('属性') get得到获取 attribute 属性的意思 我们程序员自己添加的属性我们称为自定义属性 index console . log(div . getAttribute('id'));自定义属性目的:是为了保存并使用数据。有些数据可以保存到页面中而不用保存到数据库中。............

m0_55879104的博客 540

webAPI中的排他思想、自定义属性操作、节点操作(配大量案例练习)

本文旨在帮助大家学习webAPI中的排他思想、自定义属性操作以及节点操作,里面加入了大量练习帮助掌握相关技术

qq_63946637的博客 1476

JavaScript-排他思想(算法)

如果有一组相同标签的元素,需要点击的那一个样式变化,其他不变,可以使用排他算法 实现思路: 获取所有的元素对象 for循环给元素绑定点击事件 在for循环里,再添加一个for循环- - -将所有的元素样式设置为初始值, 给自己单独设置样式 代码示例: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compat

qq_39111074的博客 262

DOM对象(二)——排他思想、节点操作、换肤案例 , 下拉菜单,简单版发布留言及表格变色案例

如果有同一组元素,我们想要某一个元素实现某种样式, 需要用到循环的排他思想算法:所有元素全部清除样式(干掉其他人)给当前元素设置样式 (留下我自己)注意顺序不能颠倒,首先干掉其他人,再设置自己 换肤案例 案例分析: 表格变色案例 思路分析: 自定义属性的操作 获取属性值区别设置属性值网页中的所有内容都是节点(标签、属性、文本、注释等),在DOM 中,节点使用 node 来表示。​ HTML DOM 树中的所有节点均可通过 JavaScript 进行访问,所有 HTML 元素(节点)均可被修改,也可以创建或删

m0_53619602的博客 267

JavaScript之DOM的元素操作(2)

Web APIs学习流程 我都会在我的js专栏出。DOM对象都是根据标签生成的,所以操作标签,本质上就是操作DOM对象。如果想要修改标签元素的里面的内容,则可以使用如下几种方式: 5.1.2 innerText 和 innerHTML的区别 innerText 不识别html标签 非标准 去除空格和换行 innerHTML 识别html标签 W3C标准 保留空格和换行 用的比较多 注意:他们都不能修改表单元素(input)的value属性(本章5.3修改表单元素属性) 5.1.3 案例 随机抽奖

xrkhy的博客 1457

【干货分享|建议收藏】2万字详解DOM

7.1_排他思想简介

8235

JavaScript DOM简要总结

什么是dom 获取页面元素 给元素注册事件 操作DOM元素的属性 能够创造元素 能够操作DOM节点 DOM简介 (文档对象模型Document Model)是W3C组织推荐的处理可扩展标记语言的标准编程接口 获取元素 获取元素有以下几种方法: 1:根据ID获取 getElementById() //console.dir() 更好打印我们返回的元素对象,更好查看里面的属性和方法 2:根据标签名获取 返回的是 获取过来元素对象的集合 以伪数组的形式存储 getElementByT

weixin_38945231的博客 379

Web API介绍及DOM对象(二)

目录 一、排他思想以及获取、设置、移除属性 1.排他思想 2.获取属性的值 3.设置属性的值 4.移除属性 5.案例:表格隔行变色(通过改变 this.className的值来获取样式) 6. 排他思想按钮案例 7.tab栏切换案例(设置属性、获取属性用法) 一、排他思想以及获取、设置、移除属性 1.排他思想 如果有同一组元素,我们想要某一个元素实现某种样式,需要用到循环的排他思想算法: 1. 所有元素全部清除样式 2. 给当前元素设置样式 (后面会有案例练习) ...

可爱不能当饭吃 198

DOM简介 (一)

文档对象模型,是W3C组织推荐的处理可扩展标记语言的标准编程接口。文档: 一个页面就是一个文档,DOM中使用document表示。元素:页面中所有标签都是元素,DOM中使用element。节点:网页中所有内容都是元素,DOM中使用node如果有同一个元素,想要某一个元素实现某种样式,需要用到循环的排他思想算法所有元素全部清除样式给当前元素设置样式注意顺序不可以颠倒获取属性值获取自定义的属性,程序员自定义element.属性获取内置属性值设置元素属性值element.属性 = ‘值’

m0_65872420的博客 182

js学习笔记-排他思想(算法)

以切换按钮为例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <ti

weixin_63096198的博客 201
上一篇: BOM对象之两个定时器案例
下一篇: DOM对象之节点操作
码 码 码
博客等级 码龄6年 14粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值