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

大神帮看看我的是不是我的js出了问题,为什么,会鼠标放到上面无限拉长或字还不停抖动

window.onload=function(){     var aA=document.getElementsByTagName('a');     for(var i=0;i<aA.length;i++){         aA[i].onmouseover=function(){             var This=this;             This.time=setInterval(function(){             This.style.width=This.offsetWidth+8+'px';                 if(This.offsetWidthttp://img1.sycdn.imooc.com//57bc030f0001114214100134.jpg

正在回答

3 回答

var aA=document.getElementsByTagName('a');

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

aA[i].onmouseover=function(){

var This=this;

clearInterval(This.time);

This.time=setInterval(function(){

This.style.width=This.offsetWidth+8+"px";

if(This.offsetWidth>=160)

clearInterval(This.time);

},30)

}


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

乄小安静 提问者

非常感谢!
2016-08-24 回复 有任何疑惑可以回复我~

把缩回的时间设置成0

其实抖动效果是因为当你的鼠标离开左边的时候,触发了左边盒子的onmouseout事 件,与此同时,鼠标移到了右边,也就是触发了右边盒子的onmouseover事件,这两个事件同时进行,也就是左边盒子往回缩的同时,右边的盒子在伸 长,但是左边盒子往回缩会造成右边盒子往左移动,于是右边的盒子同时在进行左移和向右伸长,看起来就像是在抖动一样


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

我也跟你同样的结果,然后我试了下把这句clearInterval(This.time);放在了var This=this;这句后面就行了,因为先要定义变量this,我是这么想的,不知道对不对。

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

乄小安静 提问者

恩,对的!谢谢!
2016-08-24 回复 有任何疑惑可以回复我~
#2

EricZoo

终于解决了~!感谢,我就是快速移动抖动然后跳出框架无限延长,,,老师的视频里有问题,他放到了var This = this;这句的上面,结果动画效果没了,还没运行就stop了
2017-02-28 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

大神帮看看我的是不是我的js出了问题,为什么,会鼠标放到上面无限拉长或字还不停抖动

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