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

求教关于 setInterval 问题

  window.onload=function(){
            var aLi=document.getElementsByTagName('li');
            for(var i=0; i<aLi.length; i++) {
                aLi[i].onmouseover = function () {
                    var ul = this.getElementsByTagName("ul")[0];
                    if(ul){
                        clearInterval(ul.time);
                        ul.time = setInterval(function(){
                            ul.style.height = ul.offsetHeight + 8 +"px";
                            if(ul.offsetHeight >= 150){
                                clearInterval(ul.time);
                            }
                        },30);
                    }
                }
                //鼠标离开菜单,二级菜单动画收缩起来。
                aLi[i].onmouseout = function () {
                    var ul = this.getElementsByTagName("ul")[0];
                    if(ul){
                        clearInterval(ul.time);
                        ul.time = setInterval(function(){
                            ul.style.height = ul.offsetHeight - 8 +"px";
                            if(ul.offsetHeight <= 0){
                                clearInterval(ul.time);
                            }
                        },30);
                    }
                }
            }
        }

这段代码是 二级导航条的练习 ,现在一切正常 , 问题是 只要我把 setInterval 那行的 var ul.time = setInterval(...)   改成  var ul.ppp 之类的任何名字  然后当然也会把clearInterval  更新了  , 这时候代码就不能用了 二级菜单会出现 抖动现象 而且甚至会一直挂在页面上 不收回去, 请问这个是什么问题? 难道说 这玩意儿 还真和名字有关?


正在回答

1 回答

我已经知道问题了,   这个原因是因为 触发事件时 调用clearInterval 有问题 ,这个清除是为了清除 除当前事件意外的其他事件绑定在元素上的动画, 所以 这里应该clearInterval() 入参 应该为另一个事件中的 setInterval变量名

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

举报

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

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

进入课程

求教关于 setInterval 问题

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