完整代码在此:http://www.imooc.com/code/1737
aLi[i].onmouseover=function(){ //为每个li标签添加鼠标移入动作 var oSubNav=this.getElementsByTagName('ul')[0]; //获取鼠标当前li标签的第一个ul标签(二级菜单) if(oSubNav){ //如果ul标签存在的话 var This=oSubNav; // 是否多余? clearInterval(This.time); //为什么要有? This.time=setInterval(function(){ //定时,让二级菜单ul自增 This.style.height=This.offsetHeight+1+"px"; //获取当前二级菜单ul高度 + 1 if(This.offsetHeight>=120) //高度大于等于120时 clearInterval(This.time); //停止执行 },1) } }
这是我的疑问,其中 var This=oSubNav;
是不是完全多余的?因为把This替换回原来的oSubNav也是可以的。
第二个问题:为什么要用This.time来存放定期器?
我试了下,把This.time改成随便var一个变量,就出问题了。鼠标只有停在下拉菜单中第2、4个li才有效;停在第1、3个li会触发鼠标移开事件;
而且alert(This.time)是,每次鼠标移上去都是弹出2、4、6、8、10、12、没有单数,这其中必有联系,但是想不出问题是在哪里。
第三个问题:为什么要在定时器之前清除定时器呢?clearInterval(This.time);
请教各位大神。[抱拳]
相关分类