2017-07-25 57 views
-3

的setInterval將無法正常工作,這是我的代碼:的setInterval是不會工作

<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> 

我建立具有倒計時,每6小時定時器,但setInterval的只是將無法正常工作而這實際上並不按預期工作,有人能看到我出錯的地方嗎?

+2

究竟是什麼_「只是不會工作,這實際上不按預期工作」_是什麼意思?什麼情況不會發生?你在控制檯中遇到什麼錯誤? – j08691

+1

預期行爲是什麼? –

+0

從0h開始每6小時計數一次。 –

回答

5

這裏的問題在於h,ms值的構建只完成一次,而不是在clockUpdater函數中完成。

這就是爲什麼時鐘無法更新:你總是寫同一個小時。

將該部分(包括d = new Date();)移到該函數中。

+0

哦,是的,問題解決了,謝謝!現在我只需要爲計數器應用正確的邏輯來每6小時計數一次。 –