2013-12-10 61 views
-1

我構建了一個Javascript代碼的小時鐘,並且無法正確更新。它顯示的時間很好,但你必須刷新頁面才能正確更新時鐘。有沒有辦法讓我的代碼自動更新,而不必每次都更新頁面?Javascript時間守護程序無法正確更新

圖片: The Clock

<script type="text/javascript"> 

var currentTime = new Date() 
var hours = currentTime.getHours() 
var minutes = currentTime.getMinutes() 

if (minutes < 10) 
minutes = "0" + minutes 

var suffix = "AM"; 
if (hours >= 12) { 
suffix = "PM"; 
hours = hours - 12; 
} 
if (hours == 0) { 
hours = 12; 
} 

document.write("<b>" + hours + ":" + minutes + " " + suffix + "</b>") 

</script> 
+3

使用'的setInterval(函數(){....},3000) ;' –

+0

您的代碼在實施時正常工作;換句話說,沒有任何東西會導致時間更新。 – Pointy

回答

1
function UpdateClock(){ 
    var currentTime = new Date(); 
    var hours = currentTime.getHours(); 
    var minutes = currentTime.getMinutes(); 

    if (minutes < 10) 
    minutes = "0" + minutes 
    var suffix = "AM"; 
    if (hours >= 12) { 
     suffix = "PM"; 
     hours = hours - 12; 
    } 
    if (hours == 0) { 
     hours = 12; 
    } 
    //document.write("<b>" + hours + ":" + minutes + " " + suffix + "</b>"); 

    document.getElementById('myClock').innerHTML = "<b>" + hours + ":" + minutes + " " + suffix + "</b>"; 
} 


setInterval(function(){ UpdateClock(); }, 6000); 

HTML:

<div id="myClock"></div> 
+0

由於'document.write()'調用,這將無法正常工作。 – Pointy

+0

@Pointy謝謝,更新了我的答案。 –

+0

@ user876345謝謝。不過,我試過實現下面的代碼,現在沒有時間顯示。任何想法爲什麼這樣做? –

2

首先,你可以換你的代碼的功能,比方說,currentTime(),改變document.write通話到一個return語句,所以你有一個函數currentTime()返回更新的字符串然後,把手保存在某處,你要顯示的更新時間,像el = document.getElementById('time')一個HTML元素,然後使用間隔像這樣

setInterval(function() { 
    el.innerHTML = currentTime(); 
}, 5000);