2016-11-04 32 views
1

我想將動態參數傳遞給setInterval函數(請參閱問題here),特別是@ tvanfosson的註釋。 但是現在,如果滿足某些條件,我也想禁用該定時器。我試圖定義定時器變量作爲全局變量,但我仍然得到計時器上這條線undefined
console.log('else. timer=' + timer);使用動態參數在setInterval函數中禁用定時器

人。計時器=未定義

<script language="javascript" type="text/javascript"> 
    var timer; 
    var params={}; 
    params.color='light'; 
    $(document).ready(function() {    
     timer=createInterval(showSmallWidget, params.color, 500); 
    }); 

    function createInterval(f, dynamicParameter, interval) { 
     setInterval(function() { 
      f(dynamicParameter); 
     }, interval); 
    } 

    function showSmallWidget(color) { 
     if ($('#widget').html() == '') { 
      //do stuff 
     } 
     else { 
      console.log('else. timer=' + timer); 
      if (timer) { console.log('CLEAR TIMER'); timer.clearInterval(); timer = null; } 
     } 
    } 
</script> 

我試圖創建一個的jsfiddle,但我不能讓它正常工作:https://jsfiddle.net/puhw3z2k/

回答

3

有幾個問題:

1)你必須從createInterval()函數返回的timerId:

function createInterval(f, dynamicParameter, interval) { 
    return setInterval(function() { 
     f(dynamicParameter); 
    }, interval); 
} 

2)clearInterval()作品像這樣clearInterval(timer),而不是timer.clearInterval()

相關問題