2017-09-24 8 views
1

Also habe ich meine var mit setInterval initialisiert. Ich möchte anhalten und starten. Und ich möchte diese Kontrolle so oft haben wie ich möchte. Dies ist der CodesetInterval und clearInterval. Smth ging schief

<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 I "Hold" Taste drücken und es funktioniert gut. Dann klicke ich auf "Weiter" und das funktioniert auch gut. Und dann klicke ich wieder auf "Hold" ... und es funktioniert nicht. Ich würde gerne jede Hilfe und Anregungen zu schätzen wissen.

+0

JSFiddle ändert den Umfang der JS-Fenster definieren, so dass es nicht mehr global. Sie müssen nur die Einstellung auf "Kein Umbruch ..." ändern -> https://jsfiddle.net/adeneo/g8jmccfu/1/ – adeneo

Antwort

3

Sie haben vergessen, die neue Timer-ID myVar (die ich interval genannt) neu zuzuordnen:

var interval = setInterval(myTimer, 1000); 

function myTimer() { 
    // ... 
} 

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

Ihre Variable noch die ID des alten Intervall enthalten, das clearInterval(myVar) nichts zu tun hat.

0

Verwenden Sie diesen Code, müssen Sie eine Variable

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); 
    } 
Verwandte Themen