建议一种每分钟更新时间的方法

时间:2012-01-13 09:31:35

标签: javascript jquery time

我有一个完整的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();
})

4 个答案:

答案 0 :(得分:7)

问题在于您多次呼叫setInterval并且从不清除其中任何一个。所以过了一段时间,你会有大量的间隔回调在大约同一时间运行。

更改

t = setInterval('tick()',60000);

t = setTimeout(tick,60000);

当我第一次开始编写JavaScript时,我使用AJAX调用取下了Lycos Web服务器,因为我犯了同样的错误: - )

请注意,由于您显示的是实际时间,因此您应该使用比1分钟短得多的计时器。如果我在13:42:30登陆您的网页,则时间将不会更新,直到~13:43:30。为了使其与机器的时间保持同步,您可能希望为1000设置计时器。

答案 1 :(得分:3)

setInterval()设置间隔。您只需要设置一次,它将自动每60000ms调用一次。 setTimeout()是您每次必须设置的那个。

答案 2 :(得分:2)

正如其他人所指出的,你每次都在创造新的间隔。 将它移到你的功能之外。

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);
})

编辑:我很慢,其他答案似乎都在更新。所以现在这个没用了:)

答案 3 :(得分:0)

请查看以下演示代码,该代码将每秒更新一次......

<!DOCTYPE html>
<html>
<head>
	<title>j</title>
	<script type="text/javascript">

   function myFunction() 
   {
       setInterval(function(){ 
            var d = new Date(); 
            document.getElementById("dates").innerHTML = new Date(d.getTime());}, 1000);
   }
			
	</script>
</head>
<body>
	<input type="button" name="e" onclick="myFunction()">
	<p id= "dates">ok</p>
</body>
</html>