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

this指向问题

var aLi=document.getElementsByTagName('li');

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

aLi[i].onmouseover=function(){

            //鼠标经过一级菜单,二级菜单动画下拉显示出来

       var subNav = this.getElementsByTagName("ul")[0];

            if(subNav){

                var This = subNav;

                clearInterval(This.time);

                This.time = setInterval(function(){

                   This.style.height=This.offsetHeight+16+"px";

                   if(This.offsetHeight>=120){

                       clearInterval(This.time);

                   }

                },30)

            }

这段代码中var subNav = this.getElementsByTagName("ul")[0];的this指的是什么?

正在回答

2 回答

var aLi=document.getElementsByTagName('li');

this指向的是这里的aLi[i];是一级列表的li

aLi[i].getElementsByTagName("ul")[0];这个获取的是ul

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

指向LI标签

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

qq_小六_3 提问者

那为什么不可以用aLi[i].getElementsByTagName("ul")[0];来获取呢?
2016-03-18 回复 有任何疑惑可以回复我~
#2

荷犸 回复 qq_小六_3 提问者

因为java script的变量的传递问题,函数定义里没有的变量里面是传不进去的,好像你这里的function都没有参数,它里面又没有定义aLi[i]这个变量,这样的话编译器是无法读到这个变量的值的,而this关键字就是用来把函数外部的变量对象传进来的,所以这里要用this而不可以直接写aLi[i]哦。
2016-03-26 回复 有任何疑惑可以回复我~
#3

慕粉4221306 回复 荷犸

那为什么在下面的setInterval函数里可以直接用This呢
2016-10-25 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
导航条菜单的制作
  • 参与学习       123899    人
  • 解答问题       813    个

水平、垂直、圆角导航条菜单,让您的技术探索之路更高效

进入课程

this指向问题

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