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 相关文章推荐
formvalidator验证插件中有关ajax验证问题
Jan 04 Javascript
jquery ajax属性async(同步异步)示例
Nov 05 Javascript
jquery实现通用的内容渐显Tab选项卡效果
Sep 07 Javascript
JS实现的不规则TAB选项卡效果代码
Sep 18 Javascript
JS实现的自定义网页拖动类
Nov 06 Javascript
详谈JS中实现种子随机数及作用
Jul 19 Javascript
bootstrap table动态加载数据示例代码
Mar 25 Javascript
Angular 4.x 动态创建表单实例
Apr 25 Javascript
JS去掉字符串前后空格、阻止表单提交的实现代码
Jun 08 Javascript
详解es6超好用的语法糖Decorator
Aug 01 Javascript
angular 实现同步验证器跨字段验证的方法
Apr 11 Javascript
vuex存储复杂参数(如对象数组等)刷新数据丢失的解决方法
Nov 05 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
SONY ICF-SW7600的电路分析
2021/03/02 无线电
php中关于普通表单多文件上传的处理方法
2011/03/25 PHP
PHP解析目录路径的3个函数总结
2014/11/18 PHP
基于PHP技术开发客服工单系统
2016/01/06 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
2016/09/19 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
2017/03/15 PHP
PHP手机号码及邮箱正则表达式实例解析
2020/07/11 PHP
Firefox 无法获取cssRules 的解决办法
2006/10/11 Javascript
复制小说文本时出现的随机乱码的去除方法
2010/09/07 Javascript
js动态设置鼠标事件示例代码
2013/10/30 Javascript
javascript四舍五入函数代码分享(保留后几位)
2013/12/10 Javascript
js精准的倒计时函数分享
2016/06/29 Javascript
window.open打开窗口被拦截的快速解决方法
2016/08/04 Javascript
js转换对象为xml
2017/02/17 Javascript
Vue 实现展开折叠效果的示例代码
2018/08/27 Javascript
JavaScript实现滑动门效果
2020/01/18 Javascript
Vue.js原理分析之nextTick实现详解
2020/09/07 Javascript
[02:30]DOTA2放量测试专访海涛:呼吁保护新手玩家
2013/08/26 DOTA
Python函数可变参数定义及其参数传递方式实例详解
2015/05/25 Python
Python利用带权重随机数解决抽奖和游戏爆装备问题
2016/06/16 Python
彻底理解Python list切片原理
2017/10/27 Python
11月编程语言排行榜 Python逆袭C#上升到第4
2017/11/15 Python
利用python如何处理百万条数据(适用java新手)
2018/06/06 Python
基于Python和PyYAML读取yaml配置文件数据
2020/01/13 Python
Python Scrapy图片爬取原理及代码实例
2020/06/12 Python
CSS3 实现雷达扫描图的示例代码
2020/09/21 HTML / CSS
canvas绘制表情包的示例代码
2018/07/09 HTML / CSS
KIKO美国官网:意大利的平价彩妆品牌
2017/05/16 全球购物
大学生村官工作感言
2014/01/10 职场文书
县委班子四风对照检查材料思想汇报
2014/09/29 职场文书
2014年人民警察入党思想汇报
2014/10/12 职场文书
招商引资工作汇报材料
2014/10/28 职场文书
文明单位汇报材料
2014/12/24 职场文书
员工辞职信范文
2015/03/02 职场文书
2016小学新学期寄语
2015/12/04 职场文书
MySQL 语句执行顺序举例解析
2022/06/05 MySQL