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

什么时候用this,为什么用ali[i].index就不行

 window.onload=function(){

        var oDiv=document.getElementById("tab-list");

        var aDiv=oDiv.getElementsByTagName("div");

        var oul1=document.getElementById("ul1");

        var ali=oul1.getElementsByTagName("li");

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

            ali[i].index=i;

            ali[i].onmouseover=function(){

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

                    ali[i].className="";

                }

                this.className="active";

                for(j=0;j<aDiv.length;j++){

                    aDiv[j].className="hide";

                }

                aDiv[ali[i].index].className="show";

            }

        }

        

    }


正在回答

3 回答

这样说吧,你遍历完标签过后给每个标签添加一个事件,里面的this就是当前对象,你将下面的ali[i].index换成this.index或者直接用一个this都可以

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

我的理解:“  i “ 是变量,变量就涉及到作用域,作用域那么重要不用解释了。

我想ali[i].onmouseover=function(){} 是一个新函数,若你把ali[i] 或ali[i].index (含有未知变量i 的对象)放在这个新函数内,自然会是lia[i]  is  undefined。。。外层函数的变量 ”i “ 对新函数来说没有意义。除非你重新定义。


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

如果用了ali[i]那么再这个for循环中每一个ali集合的元素都会改变他的class,而你要的效果其实是只需要改变鼠标移动的这个标签

这段的逻辑就是在这个for循环里先把集合内所有ali集合内li标签的class改成空,这里要用ali[i],之后再改变鼠标点击或者移动的对象,这就是单独的对象,用的是this

ali[i].index代表的也不是一个单独的对象

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

wagahai

下面的aDiv之所以用ali[i].index是因为这个函数是用在li标签上的,对鼠标操作的反应也是在li上的,下面用这个方法的功能是为了让div区域和li标签一一对应,因为下面的div在body里也是有顺序的
2016-10-24 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

什么时候用this,为什么用ali[i].index就不行

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信