Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript时钟未正确显示_Javascript_Html_Css_Xcode_Widget - Fatal编程技术网

JavaScript时钟未正确显示

JavaScript时钟未正确显示,javascript,html,css,xcode,widget,Javascript,Html,Css,Xcode,Widget,我有一个问题,我有一个数字标志,它接受嵌入式HTML。我为它创建了一个小部件来显示一个时钟,我试着下载了一个,但由于某种原因,它们从来没有工作过,所以我自己制作了一个。我遇到的问题是时钟显示的时间不正确。我得到了它,所以数字显示正确,但我现在看到的问题是,它将显示am而不是PM。我将感谢任何帮助,不确定逻辑是否正确,或者我是否使用了错误的条件语句。任何帮助都会很棒,谢谢 <script type="text/javascript"> function updateTime() {

我有一个问题,我有一个数字标志,它接受嵌入式HTML。我为它创建了一个小部件来显示一个时钟,我试着下载了一个,但由于某种原因,它们从来没有工作过,所以我自己制作了一个。我遇到的问题是时钟显示的时间不正确。我得到了它,所以数字显示正确,但我现在看到的问题是,它将显示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>

函数updateTime(){
var currentTime=新日期();
var hours=currentTime.getHours();
var minutes=currentTime.getMinutes();
var seconds=currentTime.getSeconds();
var-p;
如果(分钟<10){
分钟=“0”+分钟;
}
如果(秒<10){
秒=“0”+秒;
}
如果(小时数>=12){
p=“PM”;//如果语句没有将其破坏,则无法将其包含在自己的语句中
小时=(小时-12);
}
如果(小时==0){
小时=(小时+12);
}否则{
p=“AM”;
}
变量v=小时+“:”+分钟+“:“+秒+”+p;
setTimeout(“updateTime()”,1000);
document.getElementById('time').innerHTML=v;
}
updateTime();
#时间{
字号:5em;
}
将您的IFs更改为:

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

你的代码几乎是对的,你只犯了一个小错误。当您检查
hours
是否大于
12
p
PM
否则
p
应该是
AM
。您可以通过在功能开始时将
p
设置为
AM
来解决此问题,即在检查后立即移动
else

此小提琴将演示一个工作示例:


setTimeOut
函数也已修复,因此它实际上可以工作:

setTimeout(updateTime, 1000);

尝试更改此行
setTimeout(“updateTime()”,1000)
to
setTimeout(updateTime,1000)
@Morpheus,我试过了,我得到了同样的问题,它应该显示为PM,它显示在AM。这是有效的,除了当我在中午12点用我的计算机时钟运行它时,它显示为AM而不是PM。我是在这样的假设下运行的,即在最后没有else的情况下,你无法编写if语句,这对我很有效,谢谢@但是您已经在代码中使用了一些if语句,而没有使用else!我很高兴这对你有帮助。:)
setTimeout(updateTime, 1000);