js遍历li并动态更换下级节点的样式
来源:互联网 发布:苹果手机设置2g网络 编辑:程序博客网 时间:2024/05/18 20:51
在此之前我在js遇到标题这种问题时候常遇到一个难题,如下图代码所示
这里是html代码
<ul> <li class="li">321 <ul class="sec_list"> <li>123</li> <li>123</li> </ul> </li> <li class="li">321 <ul class="sec_list"> <li>123</li> <li>123</li> </ul> </li> <li class="li">321 <ul class="sec_list"> <li>123</li> <li>123</li> </ul> </li></ul>
下面是错误的js代码
var li = document.getElementsByClassName('li'); for(var i=0;i<li.length;i++){ li[i].onmouseover=function(){ console.log(i); document.getElementsByClassName('sec_list')[i].style.display="block"; } } for(var i=0;i<li.length;i++){ li[i].onmouseout=function(){ console.log(i); document.getElementsByClassName('sec_list')[i].style.display="none"; } }
在这里,我就有点懵逼了,这个遍历没什么问题呀,可是调试时候i一直是3,还不停地报错,样式没一点变化。在我去了解了一些网上的一些说法,发现了下面这种做法:
var li = document.getElementsByClassName('li'); for(var i=0;i<li.length;i++){ li[i].onmouseover=function(){ console.log(i); this.getElementsByClassName('sec_list')[0].style.display="block"; } } for(var i=0;i<li.length;i++){ li[i].onmouseout=function(){ console.log(i); this.getElementsByClassName('sec_list')[0].style.display="none"; } }
hundred percent实现效果,emm有意思,问题的解决办法找到了,但是没怎么理解这个this和之前代码做法的区别,之前的做法错的原因是什么,求助各位大神解答,小编在理解后也会补上知识点~
阅读全文
0 0
- js遍历li并动态更换下级节点的样式
- jQuery遍历li节点
- JS动态增加删除UL节点LI及相关内容
- js动态增加ul节点li及input
- 遍历一个ul设置各个li不同的样式
- JavaScript 动态更换li背景颜色
- 单击li标签并改变其背景样式及获得li标签的id
- 动态的遍历嵌套的ul和li
- js实现html节点、CSS样式、事件的动态添加以及html覆盖层的添加
- flex tree动态更换各个节点的图标
- jquery动态添加以及遍历option并获取特定样式名称的option
- jquery动态添加以及遍历option并获取特定样式名称的option
- li怎么清除li的样式
- <li></li>标签的属性/样式
- 更换节点的父节点
- js循环遍历ul中li的点击事件,给给选中li添加css
- JS实现动态绑定单击事件给节点添加样式
- 更换按钮的样式
- Educational Codeforces Round 34 (Rated for Div. 2) D
- 多线程的实际应用
- 利用python.os.listdir获取文件夹中所有文件名
- (二)TensorFlow计算模型-----计算图
- linux 安装sublime3 配置GO环境,启动VIM
- js遍历li并动态更换下级节点的样式
- jstl常用标签
- CentOS安装MySQL-5.6.23
- bss,data,text段
- Spring框架搭建
- 环境变量配置(Java、Python、Tomcat、Maven)
- pytorch使用(二)自定义网络
- java 集合HashSet
- 线性分类器定义和局限性