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 相关文章推荐
改版了网上的一个js操作userdata
Apr 27 Javascript
JavaScript中的6种运算符总结
Oct 16 Javascript
JavaScript中的Primitive对象封装介绍
Dec 31 Javascript
JS+DIV+CSS实现的经典标签切换效果代码
Sep 14 Javascript
原生js仿浏览器滚动条效果
Mar 02 Javascript
JavaScript Drum Kit 指南(纯 JS 模拟敲鼓效果)
Jul 23 Javascript
基于vue2.0实现简单轮播图
Nov 27 Javascript
使用Vue自定义数字键盘组件(体验度极好)
Dec 19 Javascript
详解vuex commit保存数据技巧
Dec 25 Javascript
Vue中computed、methods与watch的区别总结
Apr 10 Javascript
vue3.0中友好使用antdv示例详解
Jan 05 Vue.js
JS中多层次排序算法的实现代码
Jan 06 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
PHP调用JAVA的WebService简单实例
2014/03/11 PHP
php+js实现异步图片上传实例分享
2014/06/02 PHP
ThinkPHP的MVC开发机制实例解析
2014/08/23 PHP
Yii2简单实现给表单添加验证码的方法
2016/07/18 PHP
微信公众号开发客服接口实例代码
2016/10/21 PHP
PHP关于foreach复制知识点总结
2019/01/28 PHP
基于php伪静态的实现方法解析
2020/07/31 PHP
Node.js中对通用模块的封装方法
2014/06/06 Javascript
JavaScript中的原型和继承详解(图文)
2014/07/18 Javascript
js正则表达式验证邮件地址
2015/11/12 Javascript
javascript实现在网页中运行本地程序的方法
2016/02/03 Javascript
深入理解jQuery layui分页控件的使用
2016/08/17 Javascript
从0开始学Vue
2016/10/27 Javascript
详解vue-cli + webpack 多页面实例配置优化方法
2017/07/13 Javascript
mpvue+vant app搭建微信小程序的方法步骤
2019/02/11 Javascript
Vue中用JSON实现刷新界面不影响倒计时
2020/10/26 Javascript
[00:37]2016完美“圣”典风云人物:rOtk宣传片
2016/12/09 DOTA
[50:21]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/19 DOTA
Python中几种操作字符串的方法的介绍
2015/04/09 Python
Python中urllib+urllib2+cookielib模块编写爬虫实战
2016/01/20 Python
Python 序列的方法总结
2016/10/18 Python
python list排序的两种方法及实例讲解
2017/03/20 Python
根据DataFrame某一列的值来选择具体的某一行方法
2018/07/03 Python
python,Django实现的淘宝客登录功能示例
2019/06/12 Python
Windows 下更改 jupyterlab 默认启动位置的教程详解
2020/05/18 Python
时尚的CSS3进度条效果
2012/02/22 HTML / CSS
Lulu & Georgia官方网站:购买地毯、家具、抱枕、壁纸、床上用品等
2018/03/19 全球购物
部队万能检讨书
2014/02/20 职场文书
创建省级文明单位实施方案
2014/02/27 职场文书
车队司机自我鉴定
2014/03/02 职场文书
2014年元旦感言
2014/03/06 职场文书
高中社区服务活动报告
2015/02/05 职场文书
员工自我工作评价
2015/03/06 职场文书
2015年大学团支部工作总结
2015/05/13 职场文书
2015年中学团委工作总结
2015/07/22 职场文书
迎客户欢迎词三篇
2019/09/27 职场文书