2017-07-25 4 views
-3

setInterval wird nicht funktionieren, das ist mein Code:setInterval einfach nicht funktioniert

<script> 

    var d = new Date(); 
    var utc_offset = d.getTimezoneOffset(); 
    d.setMinutes(d.getMinutes() + utc_offset); 
    var h = d.getHours(); 
    var m = d.getMinutes(); 
    var s = d.getSeconds(); 

function clockUpdater() { 
    if(h >= 0 || h <= 5){ 
     hl = h - 18; 
    }else if(h >= 6 || h <= 11){ 
    hl = h - 12; 
    }else if(h >= 12 || h <= 17){ 
    hl = h - 6; 
    }else if(h >= 18){ 
    hl = h - 0; 
    } 

    /* 
    hl = hl - 1; 


    if(m>1){ 
     ml = 60 - m -1; 
    } 
    */ 

    ml = 60 - m; 
    sl = 60 - s; 

    document.getElementById("timer").innerHTML = hl+":"+ml+":"+sl; 

} 

    setInterval(clockUpdater, 1000); 

</script> 

<body> 
<div id="timer"></div> 
</body> 

Ich baue einen Timer, der alle 6 Stunden abzulaufen hat, aber die setInterval einfach nicht funktionieren und das funktioniert eigentlich nicht wie vorgesehen, kann jemand sehen, wo ich falsch gelaufen bin?

+2

Was genau funktioniert _ "einfach nicht und das funktioniert eigentlich nicht wie vorgesehen" _ gemein? Was passiert nicht, dass sollte passieren? Welche Fehler bekommst du in der Konsole? – j08691

+1

Was ist das beabsichtigte Verhalten? –

+0

Es ist vorgesehen, alle 6 Stunden seit 0h zu zählen. –

Antwort

5

Das Problem hierbei ist, dass das Gebäude der h, m und s Werte einmal durchgeführt wird, anstatt in der clockUpdater Funktion getan.

Deshalb kann die Uhr nicht aktualisiert werden: Sie schreiben immer die gleiche Stunde.

Diesen Teil (einschließlich d = new Date();) in die Funktion verschieben.

+0

Oh yeah, Problem gelöst, danke! Jetzt muss ich nur die korrekte Logik anwenden, damit der Zähler alle 6 Stunden zählt. –