ClearInterval()不会停止我的旋转功能

时间:2010-08-20 18:26:46

标签: javascript jquery rotation intervals

我正在使用jQuery Rotate插件,将图像的旋转设置为90度,然后停止旋转。

我的问题是即使在调用clearInterval();

之后它也不会停止旋转
$(document).ready(function() {
    var finalAngle;
    var intval = setInterval(function func() 
    {
      $("#myimg").rotate(1);
      if(typeof func.angle == 'undefined' )
      {
           func.angle = 0;
      }

      func.angle += 1;

      finalAngle = func.angle;

    }, 1);

    if(finalAngle == 90)
    {
      clearInterval(intval);
    }
});

基本上我所做的只是(静态地)计算角度,一旦达到90,就调用clearInterval函数。我必须引入另一个变量来存储计数,以便我可以在setInterval函数之外访问它。

2 个答案:

答案 0 :(得分:3)

这很容易。调用setInterval然后评估finalAngle的条件,并在一毫秒后调用旋转函数。因此,clearInterval为90时,永远不会调用finalAngle

此代码适用于您:

$(document).ready(function() {

    var intval = setInterval(function func() 
    {
      $("#myimg").rotate(1);
      if(typeof func.angle == 'undefined' )
      {
           func.angle = 0;
      }

      func.angle += 1;

      if (func.angle == 90)
      {
        clearInterval(intval);
      }    
    }, 1);  
});

答案 1 :(得分:1)

if语句执行一次。试试这个?

$(document).ready(function() {
    var finalAngle;
    var intval = setInterval(function func() 
    {
      $("#myimg").rotate(1);
      if(typeof func.angle == 'undefined' )
      {
           func.angle = 0;
      }

      func.angle += 1;
      finalAngle = func.angle;
      if(finalAngle == 90)
      {
          clearInterval(intval);
      }


    }, 1);


});

虽然我不明白为什么你不能侥幸逃脱......

$(document).ready(function() {
    var finalAngle=0;
    var intval = setInterval(function func() 
    {
      $("#myimg").rotate(1);

      finalAngle++;

      if(finalAngle == 90)
      {
          clearInterval(intval);
      }


    }, 1);


});