javascript-排他思想+节点操作
2022/3/20 20:57:32
本文主要是介绍javascript-排他思想+节点操作,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
排他思想
- 所有元素全部清除样式
- 给当前元素设置样式
- 注意顺序,先干掉其他人,再设置自己
<script> //1.获取所有按钮元素 var btns = document.getElementsByTagName('button'); //btns得到的是伪数组 里面的每一个元素 btns[i] for (var i = 0; i < btns.length; i++) { btns[i].onclick = function () { //(1)我们先把所有的按钮颜色去掉 for (var i = 0; i < btns.length; i++) { btns[i].style.backgroundColor = ''; } //(2)然后让当前的元素背景颜色为pink this.style.backgroundColor = 'pink'; } } </script>
案列:百度换肤
这个案例练习的是给一组元素注册事件 给4个图片利用循环注册点击事件 当我们点击这个图片,让我们页面背景改为当前的图片 核心算法:把当前这个图片的src路径取过来,给body做背景即可<style> * { margin: 0; padding: 0; } body { background: url(images/1.jpg) no-repeat center top; } li { list-style: none; } .baidu { overflow: hidden; margin: 100px auto; background-color: #fff; width: 410px; padding-top: 3px; } .baidu li { float: left; margin: 0 1px; cursor: pointer; } .baidu img { width: 100px; } </style>
<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> //1.获取元素 var imgs = document.querySelector('.baidu').querySelectorAll('img'); //2.循环注册事件 for (var i = 0; i < imgs.length; i++) { imgs[i].onclick = function () { //this.src就是我们点击图片的路径,把该路径给body document.body.style.backgroundImage = 'url(' + this.src + ')'; } } </script>
表单中全选案例
- 全选和取消全选做法:让下面所以复选框的checked属性跟随全选按钮即可
- 下面复选框需要全部选中,上面的全选才能选中:给下面所以复选框绑定点击事件,每次点击,都要循环查看下面所有的复选框是否有没有没选中的,如果有一个没选中的,上面全选就不选中。
- 设置一个变量来控制全选或不全选
<div class="wrap"> <table> <thead> <tr> <th> <input type="checkbox" id="j_cbAll"> </th> <th>商品</th> <th>价钱</th> </tr> </thead> <tbody id="j_tb"> <tr> <td> <input type="checkbox"> </td> <td>iPhone8</td> <td>8000</td> </tr> <tr> <td> <input type="checkbox"> </td> <td>mac</td> <td>12000</td> </tr> <tr> <td> <input type="checkbox"> </td> <td>watch</td> <td>2000</td> </tr> </tbody> </table> </div> <script> //1.全选取消全选 //获取元素 var j_cbAll = document.getElementById('j_cbAll');//全选 var j_tbs = document.getElementById('j_tb').getElementsByTagName('input'); //注册事件 j_cbAll.onclick = function () { // this.checked;可以得到当前复选框的选中状态,true选中状态 for (var i = 0; i < j_tbs.length; i++) { j_tbs[i].checked = this.checked; } } //2.下面复选框需要全部选中,上面的全选才能选中:给下面所以复选框绑定点击事件,每次点击, //都要循环查看下面所有的复选框是否有没有没选中的,如果有一个没选中的,上面全选就不选中。 for (var i = 0; i < j_tbs.length; i++) { j_tbs[i].onclick = function () { // flag控制全选按钮是否选中 var flag = true; //每次点击下面的复选框都要循环检查小按钮是否全选中 for (var i = 0; i < j_tbs.length; i++) { if (!j_tbs[i].checked) { flag = false; break;//退出循环可以提高执行效率 } } j_cbAll.checked = flag; } } </script>
自定义属性操作
获取属性值/设置属性值/移除属性值<div id="demo" index="1" class="nav"></div> <script> var div = document.querySelector('div'); //1.获取元素的属性值 //(1)element.属性 console.log(div.id); //(2)element.getAttribute('属性') get得到获取attribute 属性的意思 //程序自己添加的属性成为自定义属性 console.log(div.getAttribute('id')); console.log(div.getAttribute('index')); //2.设置属性值 //(1)第一种方法 div.id = 'test'; div.className = 'navs'; //(2)针对自定义 div.setAttribute('index', 2); div.setAttribute('class', 'float');//class特殊 不需要弄classname //3.移除属性 div.removeAttribute('index'); </script>区别 第一种方法用于获取内置属性值(元素本身自带的属性) 第二种方法主要获得自定义属性
淘宝切换栏
<style> * { margin: 0; padding: 0; } .tab_list { height: 200px; } .tab_list li { float: left; height: 39px; line-height: 39px; padding: 0 20px; text-align: center; cursor: pointer; } .tab_list .current { background-color: brown; color: azure; } .item_info { padding: 20px 0 0 20px; } .item { display: none; } </style>
<div class="tab"> <div class="tab_list"> <ul> <li class="current">商品介绍</li> <li>规格与包装</li> <li>售后保障</li> <li>商品评价(5000+)</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">商品评价模块内容</div> <div class="item">手机社区模块内容</div> </div> </div> <script> var tab_list = document.querySelector('.tab'); var lis = tab_list.querySelectorAll('li'); var items = document.querySelectorAll('.item'); for (var i = 0; i < lis.length; i++) { //开始给5个li设置索引号 lis[i].setAttribute('index', i); lis[i].onclick = function () { //1.排他思想 for (var i = 0; i < lis.length; i++) { lis[i].className = ''; } this.className = 'current'; var index = this.getAttribute('index'); for (var i = 0; i < items.length; i++) { items[i].style.display = 'none'; } //干掉所有人 让其余div隐藏 items[index].style.display = 'block'; } } </script>
H5自定义属性
目的:为了保存并使用数据 ,有些数据可以保存到页面中而不用保存到数据库中 自定义属性获取通过getAttribute(‘属性’)获取。 但是有些自定义属性很容易引起歧义,不容易判断是元素的内置属性还是自定义属性1.设置H5自定义属性
H5规定自定义属性data-开头作为属性名并赋值<div getTime="20" data-index="2" data-list-name="ame"></div> <script> var div = document.querySelector('div'); console.log(div.getAttribute('getTime')); div.setAttribute('data-time', 20); console.log(div.getAttribute('data-index')); //dataset 是一个集合里面存放了所有以data开头的自定义属性 console.log(div.dataset); console.log(div.dataset.index); console.log(div.dataset['index']); //如果自定义属性里面有多个-连接的词,我们获取的时候采取驼峰命名法 console.log(div.dataset.listName); </script>
节点操作
<ol> <li>no.1</li> <li>no.2</li> <li>no.3</li> <li>no.4</li> </ol> <script> var ol = document.querySelector('ol'); //1.firstChild第一个子节点 不管是文本节点还是元素节点 console.log(ol.firstChild); console.log(ol.lastChild); //2.兼容性问题 console.log(ol.firstElementChild); console.log(ol.lastElementChild); //3.实际开发用法 console.log(ol.children[0]); console.log(ol.children[ol.children.length - 1]); </script>
创建节点增加节点
<ul>123</ul> <script> //1.创建节点元素节点 var li = document.createElement('li'); //2.添加节点 node.appendChild(child) node父级 child是子集 后面追加元素 var ul = document.querySelector('ul'); ul.appendChild(li); //3.添加节点 var lili = document.createElement('li'); ul.insertBefore(lili, ul.children[0]); </script>
发布留言案例
<textarea name="" id="">123</textarea> <button>发布</button> <ul> </ul> <script> //1。获取元素 var btn = document.querySelector('button'); var text = document.querySelector('textarea'); var ul = document.querySelector('ul'); //2.注册事件 btn.onclick = function () { if (text.value == '') { alert('您没有输入内容'); return false; } else { //1.创建元素 var li = document.createElement('li'); li.innerHTML = text.value; //2.添加元素 // ul.appendChild(li); ul.insertBefore(li, ul.children[0]); } } </script>
这篇关于javascript-排他思想+节点操作的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-03-29Gitlab 实现仓库完全迁移,包括所有提交记录、分支、标签
- 2024-03-28numpy moving average
- 2024-03-28lsp框架
- 2024-03-28in文件
- 2024-03-28ninoka nk 700
- 2024-03-28volatile java
- 2024-03-28netflix hystrix
- 2024-03-28landsat ndvi
- 2024-03-28变分法
- 2024-03-28FMZ股票实盘、模拟盘程序化交易实战--股票版DualThrust策略