全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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


# js  # 仿qq列表展开收缩  # js点击收缩和展开  # JS+CSS实现DIV层的展开、收缩效果  # js实现div层缓慢收缩与展开的方法  # vuejs实现折叠面板展开收缩动画效果  # JS右下角广告窗口代码(可收缩、展开及关闭)  # JavaScript设置FieldSet展开与收缩  # JS实现固定在右下角可展开收缩DIV层的方法  # 在iframe里的页面编写js  # 实现在父窗口上创建动画效果展开和收缩的div(不变动iframe父窗口代码)  # JS仿QQ好友列表展开、收缩功能(第一篇)  # Vue.JS实现垂直方向展开、收缩不定高度模块的JS组件  # JavaScript实现QQ列表展开收缩扩展功能  # javascript使用substring实现的展开与收缩文字功能示例  # 这两个  # 小编  # 每组  # 的是  # 是一个  # 在此  # 基础上  # 可以用  # 把它  # 给大家  # 要用  # 可以使用  # 所示  # 要给  # 好友列表  # 所述  # 换一个  # 给我留言  # 值为  # 要再 


相关文章: 如何快速搭建虚拟主机网站?新手必看指南  建站之星安装模板失败:服务器环境不兼容?  宝塔面板如何快速创建新站点?  学校免费自助建站系统:智能生成+拖拽设计+多端适配  免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?  如何快速生成ASP一键建站模板并优化安全性?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  常州自助建站费用包含哪些项目?  如何在IIS7上新建站点并设置安全权限?  深圳网站制作的公司有哪些,dido官方网站?  如何确认建站备案号应放置的具体位置?  网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?  黑客入侵网站服务器的常见手法有哪些?  定制建站模板如何实现SEO优化与智能系统配置?18字教程  香港服务器建站指南:免备案优势与SEO优化技巧全解析  如何在云服务器上快速搭建个人网站?  西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?  公司网站的制作公司,企业网站制作基本流程有哪些?  网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  如何自定义建站之星模板颜色并下载新样式?  高端智能建站公司优选:品牌定制与SEO优化一站式服务  如何零成本快速生成个人自助网站?  建站中国官网:模板定制+SEO优化+建站流程一站式指南  建站之星如何保障用户数据免受黑客入侵?  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  制作网站的模板软件,网站怎么建设?  制作农业网站的软件,比较好的农业网站推荐一下?  济南网站制作的价格,历城一职专官方网站?  建站主机默认首页配置指南:核心功能与访问路径优化  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  建站之星24小时客服电话如何获取?  建站主机系统SEO优化与智能配置核心关键词操作指南  香港服务器如何优化才能显著提升网站加载速度?  北京的网站制作公司有哪些,哪个视频网站最好?  建站之星如何防范黑客攻击与数据泄露?  打鱼网站制作软件,波克捕鱼官方号怎么注册?  如何在企业微信快速生成手机电脑官网?  宝塔新建站点报错如何解决?  建站之星后台密码遗忘如何找回?  建站之星如何快速生成多端适配网站?  上海网站制作网站建设公司,建筑电工证网上查询系统入口?  制作销售网站教学视频,销售网站有哪些?  Swift中循环语句中的转移语句 break 和 continue  成都网站制作报价公司,成都工业用气开户费用?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  建站之星价格显示格式升级,你的预算足够吗?  建站之星北京办公室:智能建站系统与小程序生成方案解析  专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何用腾讯建站主机快速创建免费网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。