我遇到一个问题,我有一个数字标志,它接受嵌入式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>
答案 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
时,p
为PM
其他 p
应为AM
。您可以通过在功能开头设置p
到AM
,在检查后立即移动else
来解决此问题。
这个小提琴将展示一个工作示例:http://jsfiddle.net/s2R9y/
if (hours >= 12) {
p = "PM";
hours = (hours - 12);
} else {
p = "AM";
}
setTimeOut
函数也已修复,所以实际上有效:
setTimeout(updateTime, 1000);