JavaScript时钟无法正确显示

时间:2013-10-21 18:59:55

标签: javascript html css xcode widget

我遇到一个问题,我有一个数字标志,它接受嵌入式HTML。我创建了一个小部件来显示一个时钟,我尝试下载一个,但他们从来没有因为某些原因而工作,所以我自己做了。我遇到的问题是时钟没有显示正确的时间。我得到了它,所以数字显示正确,但我现在看到的问题是它将dsiplay AM而不是PM。我会感谢任何帮助,不确定逻辑是否正确或我是否使用了错误的条件语句。任何帮助都会很棒,谢谢!

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

2 个答案:

答案 0 :(得分:1)

将您的IF更改为:

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

答案 1 :(得分:0)

您的代码几乎是正确的,您只会犯一个小错误。当您检查hours是否大于12时,pPM 其他 p应为AM。您可以通过在功能开头设置pAM,在检查后立即移动else来解决此问题。

这个小提琴将展示一个工作示例:http://jsfiddle.net/s2R9y/

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

setTimeOut函数也已修复,所以实际上有效:

setTimeout(updateTime, 1000);