【问题标题】:Can this time script be updated automatically?这个时间脚本可以自动更新吗?
【发布时间】:2014-03-28 08:37:56
【问题描述】:

我正在使用以下脚本在我的网站上显示当前时间:

<script type="text/javascript">
<!--

    var currentTime = new Date()
    var hours = currentTime.getHours()
    var minutes = currentTime.getMinutes()
    if (minutes < 10)
        minutes = "0" + minutes
    var suffix = "AM";
    if (hours >= 12) {
        suffix = "PM";
        hours = hours - 12;
    }
    if (hours == 0) {
        hours = 12;
    }

    document.write("<b>" + hours + ":" + minutes + " " + suffix + "</b>")
//-->
</script>

但是,我需要刷新页面才能有时间更新。我可以让时间每分钟自动刷新一次以保持最新吗?

谢谢。

【问题讨论】:

  • 我建议你看看使用Livestamp.js
  • 谢谢。如果可能的话,我希望使用现有的代码。我正在研究一个像 setInterval 这样的函数,但它需要将我现有的脚本包装在一个函数中。我试过了,它坏了。也许我做错了?
  • 我不认为自己滚动有什么意义.. 几年前你不得不使用一个库,如果它可用的话。

标签: javascript time


【解决方案1】:

您可以使用 setInterval 让该代码每 x 毫秒执行一次:

function setTime() {
    var currentTime = new Date()
    var hours = currentTime.getHours()
    var minutes = currentTime.getMinutes()
    if (minutes < 10)
        minutes = "0" + minutes
    var suffix = "AM";
    if (hours >= 12) {
        suffix = "PM";
        hours = hours - 12;
    }
    if (hours == 0) {
        hours = 12;
    }

    document.write("<b>" + hours + ":" + minutes + " " + suffix + "</b>")
}

setInterval(setTime, 60000);

注意,使用document.write 通常是一种不好的做法。更好的方法是在页面上静态显示元素,并在方法中更新它。

document.getElementById('currentTime').innerText = hours + ":" + minutes + " " + suffix; 

这是一个有效的Fiddle Demo

【讨论】:

  • 非常感谢!这在 Chrome 中运行良好,但对我来说,时间在 Firefox 中消失了。有什么建议吗?
  • 使用textContent 而不是innerText。我相信这更能跨浏览器兼容。查看 This Answer 制作可以在多个浏览器中运行的东西。
  • 它现在在 Firefox 中运行良好,但在使用默认浏览器的 Android 上我仍然没有得到任何东西。有什么不同的要求吗?
  • 显然Android浏览器支持innerHTML。我做的移动网络开发不多,所以我不确定要采取什么方法。
  • 感谢您的帮助。我真的很感激。
猜你喜欢
  • 2017-11-06
  • 1970-01-01
  • 1970-01-01
  • 2011-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-13
  • 2023-04-03
相关资源
最近更新 更多