2017-01-31 17 views
0

Ich schrieb diesen einfachen JS-Timer und ich habe ein Problem mit if für Minuten, schreibt es immer noch in der ersten Sekunde 00:01, zweite Sekunde 000: 02 ...... Wenn Sie mich verstehen. Können Sie mir bitte helfen? DankeFormatieren einer Zeit als Zeichenfolge

var sec = 0; 
var min = 0; 
var time; 
function timer() { 
    sec++; 
    if (sec < 10) { 
     sec = "0" + sec; 
    } 
    if (min < 10) { //here is problem I think 
     min = "0" + min; 
    } 

    if (sec == 60) { 
     sec = 0; 
     min++; 
    } 

    if (sec == 5) { //this is just a function test 
     document.getElementById("myForm").submit(); 
    } 
    document.getElementById("myTimer").innerHTML = min + ":" + sec; 
} 
function start() { 
    time = setInterval("timer()", 1000); 
} 
+0

beachte, dass es eine Funktionsreferenz anstatt einer Zeichenfolge als ersten Parameter zu * setInterval *, so 'setInterval (timer, 1000)' passieren bevorzugt. ;-) – RobG

Antwort

2

Jedesmal, wenn Ihre Funktion läuft, ist es eine Null bis Anfang min fügt hinzu, die eine globale Variable ist. Deshalb funktioniert es so, wie es ist.

Sie könnten eine temporäre Variable verwenden, um die Zeit als Zeichenfolge zu speichern.

var sec = 0; 
 
var min = 0; 
 
var time; 
 
function timer() { 
 
    sec++; 
 
    
 
    var minStr = (min < 10) ? '0' + min : '' + min; 
 
    var secStr = (sec < 10) ? '0' + sec : '' + sec; 
 
    
 
    document.getElementById("myTimer").innerHTML = minStr + ":" + secStr; 
 
} 
 
function start() { 
 
    time = setInterval("timer()", 1000); 
 
} 
 
start();
<div id="myTimer"></div>

+0

Vielen Dank :) – Dolis

Verwandte Themen