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