建议一种每分钟更新时间的方法
我有一个完整的ajax应用程序。 我使用以下代码每分钟更新时间。 但如果我让浏览器保持打开状态超过10分钟,浏览器就会变得无响应/慢。 建议更好的代码。
function tick() { var d = new Date(); var time = padNumber(d.getHours(),2)+':'+padNumber(d.getMinutes(),2); $('#WeatherBoLfTime').html(' '+time); t = setInterval('tick()',60000); } $(document).ready(function(){ tick(); })
问题是你多次调用setInterval
并且从不清除它们中的任何一个。 所以过了一段时间,你会有大量的间隔回调在大约同一时间运行。
更改
t = setInterval('tick()',60000);
至
t = setTimeout(tick,60000);
当我第一次开始编写JavaScript时,我用AJAX调用了一个Lycos Web服务器,因为我犯了同样的错误:-)
请注意,由于您显示的是实际时间,因此您应该使用比1分钟短得多的计时器。 如果我在13:42:30登陆您的网页,则时间不会更新,直到~13:43:30。 为了使其与机器的时间保持同步,您可能希望将计时器设置为1000
。
setInterval()
设置一个间隔。 您只需要设置一次,它将自动每60000ms调用一次。 setTimeout()
是您每次必须重新设置的那个。
正如其他人所指出的,你每次都在创造新的区间。 将它移到你的function之外。
function tick() { var d = new Date(); var time = padNumber(d.getHours(),2)+':'+padNumber(d.getMinutes(),2); $('#WeatherBoLfTime').html(' '+time); } $(document).ready(function(){ t = setInterval(tick,60000); })
编辑:我很慢,其他答案似乎更新。 所以现在这个没用了:)
请查看以下演示代码,该代码将每秒更新一次……
j ok