当前位置:首页 > 日记 > 正文

JS仿QQ好友列表展开、收缩功能 | 第二篇

JS仿QQ好友列表展开、收缩功能 | 第二篇

在上篇的基础上继续完善,点击一个li元素,其他li元素上的类名清除掉。

效果图如下所示:

js:

<script> window.onload = function(){  var list = document.getElementById('list');  var ah2 = list.getElementsByTagName('h2');  var uls = list.getElementsByTagName('ul'); var lis = null;//用于下面的存储 var arrli = [];// // h2要和下面的ul进行匹配,所以我们要用索引值,给h2身上添加索引值 for(var i=0;i<ah2.length;i++){  ah2[i].index = i;//给h2添加索引值,点击谁就给谁添加索引值 ah2[i].onclick = function(){ if(this.className == ''){//判断所点击的h2标签是否有类,  //this.index指h2身上的索引数,this指h2,h2的索引值为this.index  uls[this.index].style.display = 'block';   this.className = 'active';//给当前点击的h2添加类,更改箭头方向 }else{  uls[this.index].style.display = 'none';  this.className = ''; } } } // 找到list里的所有ul,共有三个ul,所以用到for循环 for(var i=0;i<uls.length;i++){//找到每一组ul lis = uls[i].getElementsByTagName('li');//找到uls中的所有li元素,存入到lis中,为什么要存一下呢?因为找到的li元素是一组元素的集合,要给每一个元素添加点击事件,存起来之后要再来一次for循环,for套for中间没有函数包着所以得换一个变量 for(var j=0;j<lis.length;j++){//找到每组ul中的所有li arrli.push(lis[j]); //把每个li放到数组中,因为是要操作一组li中的每个,所以我们把它拎出来放在一起方便操作 } } // 找到每个li之后进行点击事件操作 for(var i=0;i<arrli.length;i++){ arrli[i].onclick = function(){ // 清除所有类名,只给当前点击的添加 // 只保留一个li元素添加类名 // 为什么用的是i呢?因为for套for它们中间有一层函数隔开(有函数包含的情况下作用域发生了改变),所以可以使用同样的i名称 for(var i=0;i<arrli.length;i++){  arrli[i].className = '';//去掉点击所有添加的类 } this.className = 'hover';//给当前点击的li元素添加类名 } } }</script>

注意:

怎么区分for循环中有的用 i 有的用 j?

答:①如果是一个for循环,那么用 i 或者 j 哪个都行,一般是用 i .
②如果是两个for嵌套,那么看两个for中间有没有函数隔开:1.有函数隔开,那么这两个for循环中的变量都可以用 i 。2.没有函数隔开,那么这两个for循环中的变量不能使用相同的 i 来命名,一个 i ,一个 j .

例一:

下面是两个嵌套的for循环中没有函数隔开,所以一个是 i ,一个是 j .

for(var i=0;i<uls.length;i++){//找到每一组ul lis = uls[i].getElementsByTagName('li'); for(var j=0;j<lis.length;j++){//找到每组ul中的所有li arrli.push(lis[j]);  }}

例二:

也是两个嵌套的for循环中,有一个函数隔开,那么就可以使用同一个 i 来命名。

for(var i=0;i<arrli.length;i++){ arrli[i].onclick = function(){  for(var i=0;i<arrli.length;i++){ arrli[i].className = '';//去掉点击所有添加的类 } this.className = 'hover';//给当前点击的li元素添加类名 }}

以上所述是小编给大家介绍的JS仿QQ好友列表展开、收缩功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

相关文章

powerpoint启动出现错误怎么解决

powerpoint启动出现错误怎么解决

启动,解决方法,出现错误,电脑软件,powerpoint,  在日常的办公中,使用PowerPoint绝对是少不了的,而在使用PowerPoint的过程中,有时我们会发现PowerPoint文件打不开了,弹出提示的错误信息,怎么解决呢?下面小编马上就告诉大家PowerPoint启动出错…

jquery dataTable 获取某行数据

jquery dataTable 获取某行数据

行数,电脑软件,jquery,dataTable,DataTable API table.row(rowSelector [,modifier]) 注table是dataTable的对象该方法有两个默认参数第一个是选择器 第二个是可选的请注意,如果选择器匹配多个行,则此方法将截断结果以仅包含一行,即第一个匹配的…

Visual Studio 2017下ASP.NET CORE

Visual Studio 2017下ASP.NET CORE

提示,智能,解决办法,电脑软件,Studio,之前在VS2017RC中就发现该问题,安装了依赖,但是前段一直点不出来asp-for,后来查了发行说明,才知道在VS2017rc中暂时无法解决,所以一直等到VS2017正式版的发布,急冲冲的装好,建了一个demo项目,还是无法出现TagHe…

ps怎样复制图层

ps怎样复制图层

图层,方法,图片,电脑软件,ps,  如果在修改图片的时候需要图片不会被损坏,最好的方法就是复制一个图层,很多刚学习的新手小伙伴可能还不知道,下面是小编带来关于ps怎样复制图片图层的内容,希望可以让大家有所收获!ps复制图片图层的方法使用选…

Ajax解决缓存的5种方法总结 | 推荐

Ajax解决缓存的5种方法总结 | 推荐

推荐,缓存,种方法,电脑软件,Ajax,1、在ajax发送请求前加上 anyAjaxObj.setRequestHeader(“If-Modified-Since”,”0″)。2、在ajax发送请求前加上 anyAjaxObj.setRequestHeader(“Cache-Control”,”no-cache”)。3、在URL后面加上一个随…

JSP 开发之Servlet解决网页缓存问

JSP 开发之Servlet解决网页缓存问

缓存,网页,电脑软件,JSP,Servlet,JSP 开发之Servlet解决网页缓存问题(1)我们为什么要防止游览器页面缓存的问题:所以在不需要缓存的页面中需要实现不缓存页面;代码如下:package com.lc.HttpTest; import java.io.IOException; import java.io.P…

painter结合sai绘制儿童插画之花神

painter结合sai绘制儿童插画之花神

绘制,插画,之花,儿童,电脑软件,插画在中国被人们俗称为插图。今天通行于国外市场的商业插画包括出版物插图、卡通吉祥物、影视与游戏美术设计和广告插画4种形式。实际在中国,插画已经遍布于平面和电子媒体、商业场馆、公众机构、商品包装、…

利用JS hash制作单页Web应用的方法

利用JS hash制作单页Web应用的方法

方法,详解,电脑软件,JS,hash,前言本文主要给大家介绍了关于利用JS hash制作单页Web应用的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。一、何为hash这里要讲的hash(也叫哈希),指的是JS中location对象的hash属性,它返…

id怎么排版书籍?ID排版给书籍添加

id怎么排版书籍?ID排版给书籍添加

书籍,目录,电脑软件,id,ID,这篇教程是向的朋友分享ID排版给书籍添加目录方法,操作很简单的,大家学会了吗?希望能对大家有所帮助!步骤:1、打开InDesign新建合适大小的文档2、导入文章内容3、新建一个段落样式,命名为目录,4、新建一个段落样式,命名为…

js Date | 日期函数浏览器兼容问题

js Date | 日期函数浏览器兼容问题

浏览器兼容,问题解决方法,日期函数,电脑软件,js,一般 直接new Date() 是不会出现兼容性问题的,而 new Date(datetimeformatstring) 常常会出现浏览器兼容性问题,为什么,datetimeformatstring中的某些格式浏览器不兼容。1. 无参//无参 所有浏览…

微信小程序 action-sheet 反馈上拉

微信小程序 action-sheet 反馈上拉

上拉,简单实例,菜单,反馈,程序,微信小程序 action-sheet 反馈上拉菜单简单实例看下实现效果图:jsvar items = ['item1', 'item2', 'item3', 'item4'] var pageObject = { data: { actionSheetHidden: true, actionSheetItems: …

PPT2013合理应用配色方案的方法有

PPT2013合理应用配色方案的方法有

方案,方法,有哪些,电脑软件,  在PPT颜色搭配方面,苦于没有什么新意,不知道从何做起。为何不尝试一下PPT自带的配色功能呢?应用了模板配色,文字配色方案也会相应地改变。以下是小编为您带来的关于PPT2013合理应用配色方案,希望对您有所帮助。P…