最后的结果。我正在更新它,以便将来可以将我最初发布的问题(如何制作12小时时钟)转发到此主题以供参考。感谢MrChief的帮助!
<html>
<head>
<script type="text/javascript">
String.prototype.lpad = function(padString, length) {
var str = this;
while (str.length < length) {
str = padString + str;
}
return str;
}
function timeNow() {
var today = new Date();
var h = today.getHours();
var m = today.getMinutes();
var s = today.getSeconds();
var tt = (h >= 12) ? " pm" : " am";
time = (h - 12).toString().lpad("0", 2) + ":" + m.toString().lpad("0", 2) + ":" + s.toString().lpad("0", 2) + tt;
document.getElementById('txt').innerHTML=time;
var timer = setTimeout(timeNow,500);
}
</script></head>
<body onload="timeNow()">
<div id="txt"></div>
</body></html>
答案 0 :(得分:4)
也许你的意思
i="0" + i + "am";
^
并且您的checkTime
函数缺少关闭parens。
更新:
有更好的方法来填充。这是一个修改string
的{{3}}的函数,它为字符串对象添加了左边距填充功能。
//pad left
String.prototype.lpad = function(padString, length) {
var str = this;
while (str.length < length)
str = padString + str;
return str;
}
使用它,您的功能变得更加简单:
function timeNow() {
var today = new Date();
var h = today.getHours();
var m = today.getMinutes();
var s = today.getSeconds();
var tt = (h >= 12) ? " pm" : " am";
time = h.toString().lpad("0", 2) + ":" + m + ":" + s.toString().lpad("0", 2) + tt;
alert(time);
}
演示:prototype
以下是使用您的HTML的完整演示:http://jsfiddle.net/mrchief/kTQnM/7/
答案 1 :(得分:2)
function checkTime
缺少右括号。am
和pm
的后缀。 尝试在开发期间在jsFiddle等环境中运行JavaScript。
这是您的代码:http://jsfiddle.net/kTQnM/2/
要使AM / PM正常工作,建议使用此方法:Converting 24 hour time to 12 hour time w/ AM & PM using Javascript
答案 2 :(得分:0)
您正尝试从分钟和秒而不是从小时开始设置上午/下午。它应该是一个单独的函数,例如
var am_pm = (h < 12) ? 'am' : 'pm';
m = (m < 10) ? '0' + m : m;
s = (s < 10) ? '0' + s : s;
此外,还有一些语法错误,例如:
else (10<i<12)
应为else if (i > 10 && i < 12)
答案 3 :(得分:0)
更改
else (10<i<12)
to else(10&lt; i&amp; i&lt; 12&lt; 12)
(1010,这变为(真实)&lt; 12将评估为真。