JavaScript时钟未正确显示
我有一个问题,我有一个数字标志,它接受嵌入式HTML。我为它创建了一个小部件来显示一个时钟,我试着下载了一个,但由于某种原因,它们从来没有工作过,所以我自己制作了一个。我遇到的问题是时钟显示的时间不正确。我得到了它,所以数字显示正确,但我现在看到的问题是,它将显示am而不是PM。我将感谢任何帮助,不确定逻辑是否正确,或者我是否使用了错误的条件语句。任何帮助都会很棒,谢谢JavaScript时钟未正确显示,javascript,html,css,xcode,widget,Javascript,Html,Css,Xcode,Widget,我有一个问题,我有一个数字标志,它接受嵌入式HTML。我为它创建了一个小部件来显示一个时钟,我试着下载了一个,但由于某种原因,它们从来没有工作过,所以我自己制作了一个。我遇到的问题是时钟显示的时间不正确。我得到了它,所以数字显示正确,但我现在看到的问题是,它将显示am而不是PM。我将感谢任何帮助,不确定逻辑是否正确,或者我是否使用了错误的条件语句。任何帮助都会很棒,谢谢 <script type="text/javascript"> function updateTime() {
<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)
tosetTimeout(updateTime,1000)
@Morpheus,我试过了,我得到了同样的问题,它应该显示为PM,它显示在AM。这是有效的,除了当我在中午12点用我的计算机时钟运行它时,它显示为AM而不是PM。我是在这样的假设下运行的,即在最后没有else的情况下,你无法编写if语句,这对我很有效,谢谢@但是您已经在代码中使用了一些if语句,而没有使用else!我很高兴这对你有帮助。:)
setTimeout(updateTime, 1000);