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


Posted in Javascript onJuly 07, 2017

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

效果图如下所示:

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

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好友列表展开、收缩功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript:;与javascript:void(0)使用介绍
Jun 05 Javascript
JavaScript多线程详解
Aug 12 Javascript
JavaScript如何实现组合列表框中元素移动效果
Mar 01 Javascript
JavaScript实现阿拉伯数字和中文数字互相转换
Jun 12 Javascript
Vue.js每天必学之表单控件绑定
Sep 05 Javascript
Javascript 跨域知识详细介绍
Oct 30 Javascript
vue.js入门(3)——详解组件通信
Dec 02 Javascript
动态加载css方法实现和深入解析
Jan 18 Javascript
Vue.js实现微信过渡动画左右切换效果
Jun 13 Javascript
webpack教程之webpack.config.js配置文件
Jul 05 Javascript
leaflet加载geojson叠加显示功能代码
Feb 21 Javascript
Node.js API详解之 zlib模块用法分析
May 19 Javascript
JS实现发送短信验证后按钮倒计时功能(防止刷新倒计时失效)
Jul 07 #Javascript
详解vue.js+UEditor集成 [前后端分离项目]
Jul 07 #Javascript
JS实现搜索关键词的智能提示功能
Jul 07 #Javascript
vue.js国际化 vue-i18n插件的使用详解
Jul 07 #Javascript
javascript ES6 新增了let命令使用介绍
Jul 07 #Javascript
微信小程序之绑定点击事件实例详解
Jul 07 #Javascript
分享19个JavaScript 有用的简写写法
Jul 07 #Javascript
You might like
《APMServ 5.1.2》使用图解
2006/10/23 PHP
亲密接触PHP之PHP语法学习笔记1
2006/12/17 PHP
php设计模式 Composite (组合模式)
2011/06/26 PHP
PHP __autoload函数(自动载入类文件)的使用方法
2012/02/04 PHP
php对包含html标签的字符串进行截取的函数分享
2014/06/19 PHP
PHP防止刷新重复提交页面的示例代码
2015/11/11 PHP
PHP操作MongoDB实现增删改查功能【附php7操作MongoDB方法】
2018/04/24 PHP
jquery.validate使用攻略 第五步 正则验证
2010/07/01 Javascript
jQuery 常见操作实现方式和常用函数方法总结
2011/05/06 Javascript
js判断字符长度以及中英文数字等
2013/12/31 Javascript
JavaScript继承基础讲解(原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承)
2014/08/16 Javascript
AngularJS学习笔记之ng-options指令
2015/06/16 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
2015/09/08 Javascript
bootstrap suggest下拉框使用详解
2017/04/10 Javascript
提高Node.js性能的应用技巧分享
2017/08/10 Javascript
微信小程序使用map组件实现检索(定位位置)周边的POI功能示例
2019/01/23 Javascript
微信小程序实现的一键拨号功能示例
2019/04/24 Javascript
jQuery轮播图功能制作方法详解
2019/12/03 jQuery
echarts实现获取datazoom的起始值(包括x轴和y轴)
2020/07/20 Javascript
Python编程给numpy矩阵添加一列方法示例
2017/12/04 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
2020/04/08 Python
Python3+Flask安装使用教程详解
2021/02/16 Python
Farfetch阿联酋:奢侈品牌时尚购物平台
2019/07/26 全球购物
荣耀商城:HIHONOR
2020/11/03 全球购物
C语言如何决定使用那种整数类型
2016/11/26 面试题
统计学专业毕业生的自我评价分享
2013/11/28 职场文书
艺术设计专业个人求职信范文
2013/12/11 职场文书
大学生职业生涯规划书前言
2014/01/09 职场文书
大学生两会学习心得体会
2014/03/10 职场文书
《诚实与信任》教学反思
2014/04/10 职场文书
2014乡镇领导班子四风对照检查材料思想汇报
2014/10/05 职场文书
2014年班级工作总结范文
2014/12/23 职场文书
捐助倡议书
2015/01/19 职场文书
总经理致辞
2015/07/29 职场文书
学校体育节班级口号
2015/12/25 职场文书
用Python写一个简易版弹球游戏
2021/04/13 Python