为了账号安全,请及时绑定邮箱和手机立即绑定

选项卡切换的时候,添加index属性值的问题

for(var i= 0;i<oLis.length;i++){

        oLis[i].index = i;
        oLis[i].onclick = function(){
          for(var n= 0;n<oLis.length;n++){
            oLis[n].className = "";
            oDivs[n].className = "hide";
          }
          this.className = "on";
          oDivs[this.index].className = "";
        }
      }

这是编程挑战给出的实现选项卡切换的JS代码,在这里是利用遍历li标签,实现点击的时候添加类实现的CSS样式不同我是理解的。但是在变量li标签时,我认为他给li的index属性赋值是为了人为制造一个索引值,而且他认定了li标签出现的顺序是和对应的div标签出现的顺序一致,所以this.index才可以指向对应的div标签。我想问的是,他这个应该是在已知li和div的顺序的情况下写出的代码,也就是如果是一个黑盒的话,就不能直接用this.index去索引div标签了吧?

正在回答

1 回答

同学不知道你知不知道闭包的概念,他这里使用oLis[i].index = i;是为了避免了闭包,使得onclick之后i的值不是固定值3,和div顺序没什么关系

for(var i=0;i<liObjs.length;i++){

            (function(i){

               liObjs[i].onclick=function(){

                   for(var n=0;n<3;n++){

                     liObjs[n].className="";

                     divObjs[n].className="hide";

                     this.className="on";

                     divObjs[i].className="";

                   }

                } 

            })(i);

这是我写的用(function(i){})(i)解决了闭包,这也是很常用的方法

0 回复 有任何疑惑可以回复我~
#1

qq_二冬_0 提问者

闭包我知道,暂时还没有研究懂。然我就之后学过闭包后再来反思一下这个问题。先谢谢了。
2016-07-31 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       469142    人
  • 解答问题       22583    个

本课程从如何插入JS代码开始,带您进入网页动态交互世界

进入课程

选项卡切换的时候,添加index属性值的问题

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号