2017-09-24 58 views
1

所以,我用setInterval初始化了我的var。 我想停下來並開始它。我希望儘可能經常地進行這種控制。 這是代碼setInterval和clearInterval。 Smth出錯了

<script> 
var myVar = setInterval(myTimer, 1000); 

function myTimer() { 
    var d = new Date(); 
    var t = d.toLocaleTimeString(); 
    document.getElementById("demo").innerHTML = t; 
} 

function myStopFunction() { 
    clearInterval(myVar); 
} 
function myStartFunction() { 
    setInterval(myTimer, 1000); 
    //setInterval(myVar, 1000); 
} 
</script> 

jsfiddle.net/adeneo/g8jmccfu/1 我按下「暫停」按鈕,它的作品不錯。然後我點擊「繼續」,這也很好。然後我再次單擊「保持」...並且不起作用。 我想感謝任何幫助和任何建議。

+0

的jsfiddle改變JS窗口的範圍,因此它不再是全球性的。您只需將設置更改爲「不換行...」 - > https://jsfiddle.net/adeneo/g8jmccfu/1/ – adeneo

回答

3

你忘了重新分配新的計時器ID來myVar(我稱之爲interval):

var interval = setInterval(myTimer, 1000); 

function myTimer() { 
    // ... 
} 

function myStopFunction() { 
    clearInterval(interval); 
} 
function myStartFunction() { 
    interval = setInterval(myTimer, 1000); 
} 

你的變量仍然包含舊區間的ID,這讓clearInterval(myVar)什麼也不做。

0

使用此代碼,您需要定義一個變量

var myVar; 
    function myTimer() { 
     var d = new Date(); 
     var t = d.toLocaleTimeString(); 
     document.getElementById("demo").innerHTML = t; 
    } 

    function myStartFunction() { 
     myVar = setInterval(myTimer, 1000); 
    } 

    myStartFunction(); 

    function myStopFunction() { 
     clearInterval(myVar); 
    } 
相關問題