我在标题中使用以下javascript来刷新页面
<script type="text/JavaScript">
<!--
function timedRefresh(timeoutPeriod) {
setTimeout("location.reload(true);",timeoutPeriod);
}
// -->
</script>
和身体标签
<body onload="JavaScript:timedRefresh(5000);">
我的问题是如何添加显示倒计时的文字来刷新页面
x秒刷新
答案 0 :(得分:19)
这是否符合您的需求?
(function countdown(remaining) {
if(remaining <= 0)
location.reload(true);
document.getElementById('countdown').innerHTML = remaining;
setTimeout(function(){ countdown(remaining - 1); }, 1000);
})(5); // 5 seconds
答案 1 :(得分:7)
function timedRefresh(timeoutPeriod) {
var timer = setInterval(function() {
if (timeoutPeriod > 0) {
timeoutPeriod -= 1;
document.body.innerHTML = timeoutPeriod + ".." + "<br />";
// or
document.getElementById("countdown").innerHTML = timeoutPeriod + ".." + "<br />";
} else {
clearInterval(timer);
window.location.href = window.location.href;
};
}, 1000);
};
timedRefresh(10);
我真的不明白为什么你会为此目的使用setTimeout
。
答案 2 :(得分:6)
我知道这个问题已经在前一段时间得到解答了,但我一直在寻找类似的代码,但间隔时间更长(分钟)。它没有出现在我做的搜索中,所以这就是我提出的并且认为我会分享:
<强>的Javascript 强>
function checklength(i) {
'use strict';
if (i < 10) {
i = "0" + i;
}
return i;
}
var minutes, seconds, count, counter, timer;
count = 601; //seconds
counter = setInterval(timer, 1000);
function timer() {
'use strict';
count = count - 1;
minutes = checklength(Math.floor(count / 60));
seconds = checklength(count - minutes * 60);
if (count < 0) {
clearInterval(counter);
return;
}
document.getElementById("timer").innerHTML = 'Next refresh in ' + minutes + ':' + seconds + ' ';
if (count === 0) {
location.reload();
}
}
<强> HTML 强>
<span id="timer"></span>
答案 3 :(得分:1)
您必须每秒运行超时,更新DOM并仅在需要时重新加载:
<script type="text/JavaScript">
<!--
var i = 5000;
function timedRefresh(timeoutPeriod) {
i = timeoutPeriod;
updateDom();
}
// -->
function updateDom(){
body.innerHTML = i;
i--;
if (i==0){
location.reload(true);
}
else{
setTimeout(updateDom, 1000);
}
}
// -->
</script>
答案 4 :(得分:0)
因为我的页面没有在一秒钟内(在开发环境中)刷新,所以我将Paul的答案稍作修改为:
(function countdown(remaining) {
if(remaining === 0)
location.reload(true);
if(remaining > 0)
document.getElementById('countdown').innerHTML = remaining;
setTimeout(function(){ countdown(remaining - 1); }, 1000);
})(30); // 30 seconds
发生的事情是,计数器每秒发出新的GET,而页面从未加载任何更改。额外的测试解决了这个问题。