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

来源:10-1 编程挑战

qq_二冬_0

2016-07-26 23:12

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回答

  • weibo_民民strive_03365258
    2016-07-27 16:31:19
    已采纳

    同学不知道你知不知道闭包的概念,他这里使用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)解决了闭包,这也是很常用的方法

    qq_二冬_...

    闭包我知道,暂时还没有研究懂。然我就之后学过闭包后再来反思一下这个问题。先谢谢了。

    2016-07-31 10:12:08

    共 1 条回复 >

JavaScript进阶篇

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

468796 学习 · 22582 问题

查看课程

相似问题