非常简单的Javascript问题

时间:2011-08-16 17:46:35

标签: javascript

最后的结果。我正在更新它,以便将来可以将我最初发布的问题(如何制作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>

4 个答案:

答案 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缺少右括号。
  • 您的分钟和秒数都是ampm的后缀。

尝试在开发期间在jsFiddle等环境中运行JavaScript。

这是您的代码:http://jsfiddle.net/kTQnM/2/

enter image description here

要使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将评估为真。