0

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 関数の外部でアクセスできるように、カウントを格納する別の変数を導入する必要がありました。

4

2 に答える 2

3

それは簡単です。setIntervalが呼び出され、条件finalAngleが評価され、1ミリ秒後に回転関数が呼び出されます。したがって、が90のclearInterval場合は呼び出されません。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);  
});
于 2010-08-20T18:33:18.163 に答える
1

ifステートメントは 1 回実行されます。これを試して?

$(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);


});
于 2010-08-20T18:34:36.663 に答える