2010-08-20 32 views
0

我正在使用jQuery旋轉插件,將圖像的旋轉角度設置爲90度,然後停止旋轉。ClearInterval()不會停止我的旋轉功能

我的問題是它不會停止旋轉,即使在調用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函數之外訪問它。

+0

你只是檢查finalAngle變量一次。您應該將該檢查移入setInterval回調。 – Michal 2010-08-20 18:32:38

回答

3

這很簡單。 setInterval被調用,然後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

if語句執行一次:因此,當finalAngle是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; 
     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); 


}); 
+0

呃......我真笨。我可以發誓我的if是INSIDE的設置間隔功能。感謝您的快速解決! – Brownbay 2010-08-20 18:43:31