2016-05-04 9 views
0

Ich habe ein Problem mit der setInterval-Funktion zurückgesetzt eine verstrichene Zeit. Der Timer läuft gut, wenn Start gedrückt und durch Klicken auf eine Schaltfläche gestoppt wird. Aber wenn ich die Start-Taste erneut drücke, wird der Timer fortgesetzt und nicht zurückgesetzt. Basierend auf meinen Nachforschungen würde clearInterval das zurücksetzen, funktioniert aber nicht.Javascript: setInterval 'Resume' anstelle von 'Reset' auf Schaltfläche klicken

Hier ist ein Beispiel meines Codes. https://jsfiddle.net/4165y1x4/16/

HTML

<button id="get_data">Fetch Data</button> 
<button id="stop1">Stop</button> 
<span id="run-time"></span> 
<br> 

Javascript

var start = new Date().getTime(),elapsed = '0.0'; 

var s , url,i=0, time; 
$("#get_data").click(function() { 
    s = setInterval(function() { 
    $("#run-time").html(tym()); 

    }, 100); 

}); 

$('#stop1').click(function() { 
    clearInterval(s); 
    time = null; 
}); 


function tym() { 
    $("#run-time").html(''); 
    time = new Date().getTime() - start; 
    var min = (time/1000/60) << 0; 
    var sec = (time/1000) % 60; 

    if (sec < 10) { 
    sec = '0' + sec; 
    } 

    return elapsed = 'Elapsed Time: ' + min + ':' + sec + ' (min:sec.mil).' 
} 

Ich hoffe, dass jemand helfen könnte. Freundliche Grüße!

+1

'new Date(). GetTime()' 'kehrt zeit stamp' der aktuellen Uhrzeit, wann immer Sie das Intervall wieder aufnehmen .. – Rayon

Antwort

0

ja bei Rayon Kommentar richtig, Sie müssen die Zeit neu starten. JsFiddle

var start, 
    elapsed = '0.0'; 

var s , url,i=0, time; 
$("#get_data").click(function() { 
    start = new Date().getTime(); 
    s = setInterval(function() { 
    $("#run-time").html(tym()); 

    }, 100); 
    // getData(); 

}); 

$('#stop1').click(function() { 
    clearInterval(s); 
    time = null; 
}); 


function tym() { 
    $("#run-time").html(''); 
    time = new Date().getTime() - start; 
    var min = (time/1000/60) << 0; 
    var sec = (time/1000) % 60; 

    if (sec < 10) { 
    sec = '0' + sec; 
    } 

    return elapsed = 'Elapsed Time: ' + min + ':' + sec + ' (min:sec.mil).' 
} 
+0

Thank you es funktionierte. – graceth

Verwandte Themen