使用setInterval显示时间

时间:2013-05-02 07:10:30

标签: javascript

我试图显示每秒发生的最新日期和时间,但输出保持不变。我不想使用jquery,因为我正在学习如何使用javascript。主机在onload上调用显示功能。

function display()
{
    var today = new Date();
    var month = today.getMonth();
    var day = today.getDay();
    var year = today.getFullYear();

    var hour = today.getHours() > 12 ? today.getHours() - 12 : today.getHours();
    var minute = today.getMinutes();
    var seconds = today.getSeconds();
    var milliseconds = today.getMilliseconds();

    var output = month + '/' + day + '/' + year + ' - ' +
    hour + ':' + minute + ':' + seconds + ':' + milliseconds;

    setInterval(function() {

    document.write(output);

    }, 3000);
}

3 个答案:

答案 0 :(得分:6)

试试这个:

function display()
{
    var today = new Date();
    var month = today.getMonth();
    var day = today.getDay();
    var year = today.getFullYear();

    var hour = today.getHours() > 12 ? today.getHours() - 12 : today.getHours();
    var minute = today.getMinutes();
    var seconds = today.getSeconds();
    var milliseconds = today.getMilliseconds();

    var output = month + '/' + day + '/' + year + ' - ' +
    hour + ':' + minute + ':' + seconds + ':' + milliseconds;

    document.write(output);
}
setInterval(display, 3000);

旁注: document.write是你想要的吗?您可能希望在<span><div>中显示它。在这种情况下,document.getElementById('someId').innerHTML有帮助。

另一个旁注: setInterval(display, 3000);setInterval('display();', 3000);不同。有关详细信息,请参阅此answer

答案 1 :(得分:2)

您需要在计时器功能中进行计算,如下所示:

function display()
{
  setInterval(function() {
    var today = new Date();
    var month = today.getMonth();
    var day = today.getDay();
    var year = today.getFullYear();

    var hour = today.getHours() > 12 ? today.getHours() - 12 : today.getHours();
    var minute = today.getMinutes();
    var seconds = today.getSeconds();
    var milliseconds = today.getMilliseconds();

    var output = month + '/' + day + '/' + year + ' - ' +
    hour + ':' + minute + ':' + seconds + ':' + milliseconds;

    document.write(output);

  }, 3000);
}
display();

答案 2 :(得分:0)

变量的值保持静态。因此,如果您不更改 outout 的值,它将保持不变。

因此,您需要计算间隔回调中的日期,然后显示它。