0

我试图显示每秒发生的最新日期和时间,但输出保持不变。我不想使用 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);
}
4

3 回答 3

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你想要的吗?您可能希望在 a<span>或 a中显示它<div>。在这种情况下,document.getElementById('someId').innerHTML帮助。

另一个旁注: setInterval(display, 3000);并且setInterval('display();', 3000);是不同的。有关更多详细信息,请参阅此答案

于 2013-05-02T07:12:06.700 回答
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();
于 2013-05-02T07:13:38.263 回答
0

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

所以你需要计算区间回调里面的日期,然后显示出来。

于 2013-05-02T07:14:28.760 回答