【发布时间】:2018-02-07 13:30:02
【问题描述】:
当我使用setInterval 和clearInterval 单击按钮时,我正在旋转一个元素,当某个值为reached 时通过清除interval time t 来停止旋转。它运行良好,但是当我单击在当前动画完成之前一遍又一遍地重复相同的按钮,动画不再停止旋转。clearInterval 在这种情况下不起作用。
下面的代码说明了这一点:
var t; // interval
var x = 0 ; // counter
var cal ; // element to be rotate
function prepareRotatesX(){
x=x+5;
cal =document.getElementById("myCalendar");
cal.style.transform="rotateX("+x+"deg)";
if(x>360){ clearInterval(t); x=0;}
}
function rotate(){
t = setInterval(function(){
prepareRotatesX();
}, 10);
}
#myCalendar{
position: absolute;
top:45px;
left:20px;
border: 2px solid blue;
width: 210px;
height:170px;
background-color:blue;
}
<div id="myCalendar">
<!---HERE COME CALENDAR -->
</div>
<!-- make rotation-->
<button id='bnext' onclick='rotate();'>Rotation</button>
那么在这种情况下如何停止旋转呢?
【问题讨论】:
-
如果定义了
t,请在单击按钮时调用clearInterval。 -
因为你覆盖了 t 而第一个仍在运行。所以逻辑说停止原来的,或者如果它已经在运行,不要再运行它。
标签: javascript setinterval clearinterval