2013-10-21 76 views
0

我遇到了一個問題,我有一個數字標牌,它接受嵌入式HTML。我創建了一個窗口小部件來顯示時鐘,我嘗試下載一個窗口,並且他們從未因爲某種原因工作,所以創建了我自己的窗口。我遇到的問題是時鐘不顯示正確的時間。我知道了,所以數字正確顯示,但我現在看到的問題是,它將ds而不是PM。我將不勝感激任何幫助,不確定邏輯是否正確或者是否使用了錯誤的條件語句。任何幫助將是真棒,謝謝!JavaScript時鐘不能正確顯示

<script type="text/javascript"> 

function updateTime() { 
    var currentTime = new Date(); 
    var hours = currentTime.getHours(); 
    var minutes = currentTime.getMinutes(); 
    var seconds = currentTime.getSeconds(); 
    var p; 
    if (minutes < 10){ 
     minutes = "0" + minutes; 
    } 
    if (seconds < 10){ 
     seconds = "0" + seconds; 
    } 
    if (hours >= 12){ 
     p = "PM"; //could not get this in it's own if statement w/o breaking it 
     hours = (hours - 12); 
    } 
    if (hours == 0) { 
     hours = (hours + 12); 
    }else { 
     p = "AM"; 
    } 

    var v = hours + ":" + minutes + ":" + seconds + " " + p; 

    setTimeout("updateTime()", 1000); 
    document.getElementById('time').innerHTML= v; 
} 
updateTime(); 
</script> 
<style type="text/css"> 
#time { 
    font-size: 5em; 
} 
</style> 
<div><span id="time"></span></div> 
+1

嘗試改變這一行'的setTimeout( 「updateTime()」,1000);'setTimeout(updateTime,1000);' – Morpheus

+0

@Morpheus,我試過了,我得到了同樣的問題,它應該顯示爲PM它顯示一個AM。 – George

+0

http://jsfiddle.net/PJhjQ/ – Morpheus

回答

0

你的代碼是差不多吧,有你正在做只是一個小錯誤。當您檢查hours是否大於12時,pPM否則p應該是AM。您可以通過在功能開始時將p設置爲AM來解決此問題,在檢查之後立即移動您已有的else

這小提琴將展示一個工作示例:http://jsfiddle.net/s2R9y/

if (hours >= 12) { 
    p = "PM"; 
    hours = (hours - 12); 
} else { 
    p = "AM"; 
} 

setTimeOut功能已藏漢固定的,所以它實際工作:

setTimeout(updateTime, 1000); 
+0

我的經營假設你不能在沒有其他人的情況下寫一個if語句,這對我非常感謝! – George

+0

@GeorgeOffley但是你已經在你的代碼中使用了一些沒有別的if語句!我很高興它幫助你。 :) – Broxzier

+0

你是對的@Broxzier不注意。再次感謝! – George

1

改變你的IF到:

if (hours >= 12) { 
    p = "PM"; 
    hours = (hours>12) ? (hours - 12) : 12; 
} 
else 
{ 
    if (hours == 0) 
     hours = 12; 
    p = "AM"; 
} 
+0

這工作,除了當我用我的電腦時鐘運行它在12noon它顯示爲AM而不是PM。 – George

+0

@GeorgeOffley我已經更新了代碼,中午12點顯示下午12點 –

+0

我明白了,雖然工作得很好,謝謝! – George