定时器前面一旦加了var 为什么就会抖动

来源:2-1 JS速度动画

qq_浮世_4

2016-12-20 21:54

<!doctype html>

<html>

<head>

<meta charset="UTF-8">

<title>下拉菜单</title>

<style type="text/css">

*{margin:0;padding: 0;font-size: 13px;}

div{height:300px;width:200px;position: relative;left:-200px;top:0;background: red;}

span{width:20px;height:50px;background: blue;position: absolute;left:200px;top:75px;}

</style>


<script>

window.onload=function(){

var oDiv=document.getElementById('div1');

oDiv.onmouseover=function(){

startMove();

}

oDiv.onmouseout=function(){

startMove1();

}

}

var int=null;

function startMove(){

clearInterval(int);

var oDiv=document.getElementById('div1');

var int=setInterval(function(){if(oDiv.offsetLeft==0)

{

clearInterval;

}

else

{

oDiv.style.left=oDiv.offsetLeft+1+'px';

}},30);


}





function startMove1(){

clearInterval(int);

var oDiv=document.getElementById('div1');

var int=setInterval(function(){if(oDiv.offsetLeft==-200)

{

clearInterval;

}

else

{

oDiv.style.left=oDiv.offsetLeft-1+'px';

}},30);

}


</script>

</head>

<body>

<div id="div1"><span id="share">分享</span></div>

</body>

</html>


写回答 关注

2回答

  • 小呀嘛小白菜
    2017-01-19 10:38:16

    你在定时器前面重新定义了“int”变量,所以一开始你在程序中调用的清除定时器根本没发挥作用,函数的清除参数也根本不是你在下方调用的定时器的返回值,而且你在定时器里面的函数里的条件判断中的“clearInterval()”,根本不对,没有参数,导致整个程序出错(ps:定义变量的时候不要用语言自带的关键字“int”,这是硬性的语法规则!)

  • qq_浮世_4
    2016-12-20 21:55:35

    为什么把int 前的var去掉就好了

JS动画效果

通过本课程JS动画的学习,从简单动画开始,逐步深入各种动画框架封装

113925 学习 · 1443 问题

查看课程

相似问题