如何让计时器在javascript中反复运行

如何让计时器在javascript中反复运行,javascript,jquery,html,iframe,timer,Javascript,Jquery,Html,Iframe,Timer,我想制作一个20秒倒计时计时器,当计时器归零时,它将刷新iframe。然后在刷新iframe后,计时器再次达到20秒,在它达到0后,它再次刷新iframe。我有一个js定时器脚本,可以刷新iframe,但是我不知道如何让这个脚本一次又一次地运行 <script> var tT; var timer=20; var stop; $(document).ready(function(){ tT=document.getElementById('timer'); tT.va

我想制作一个20秒倒计时计时器,当计时器归零时,它将刷新iframe。然后在刷新
iframe
后,计时器再次达到20秒,在它达到0后,它再次刷新
iframe
。我有一个js定时器脚本,可以刷新
iframe
,但是我不知道如何让这个脚本一次又一次地运行

<script>
var tT;
var timer=20;
var stop;
$(document).ready(function(){
    tT=document.getElementById('timer');
    tT.value=timer;
    stop=setInterval(function(){
        if(timer>0){
            timer--;
            tT.value=timer;
        }else{
           clearInterval(stop);
    }},1000);
    setTimeout(function(){
      document.getElementById('timer').value = timer;
     document.getElementById('exchanger').src = document.getElementById('exchanger').src;

    },20000);
});
</script>

var-tT;
无功定时器=20;
var停止;
$(文档).ready(函数(){
tT=document.getElementById('timer');
tT.值=计时器;
停止=设置间隔(函数(){
如果(计时器>0){
计时器--;
tT.值=计时器;
}否则{
清除间隔(停止);
}},1000);
setTimeout(函数(){
document.getElementById('timer')。value=timer;
document.getElementById('exchanger').src=document.getElementById('exchanger').src;
},20000);
});
Iframe:-

<input id="timer" value="20" type="text" size="2" readonly style="border:none;background:transparent;width:18px;text-align:center">

使用

这是你函数的代码

(function(){
// do some stuff
setTimeout(arguments.callee, 20000);
})()

此问题已在以下链接中标记,以供参考:

以下是一个示例代码,可以帮助您:

函数loadlink(){
$('#iframeId')[0].contentWindow.location.reload(true);
}
loadlink();//这将在页面加载时运行
var计数=1;
setInterval(函数(){
$(“.timer”).text(计数)
计数++;
如果(计数=20){
loadlink()//每20秒运行一次
计数=0;
}
}, 1000);

我听从了阿尔布齐的建议(他对我的问题发表了评论),我
使用了setInterval而不是setTimeout,它成功了

最后的脚本是:

var tT;
var timer=20;
var stop;
$(document).ready(function(){
tT=document.getElementById('div-ID');
tT.value=timer;
stop=setInterval(function(){
if(timer>0){
timer--;
tT.value=timer;
}else{clearInterval(stop);
}},1000);
setInterval(function(){ // I changed setTimeout here
document.getElementById('Iframe-ID').src = document.getElementById('Iframe-ID').src;
timer=20;
},20000);
});
和HTML:

Iframe:

使用
setInterval
而不是像以前那样使用
setTimeout
。请始终格式化代码。如果它变得越来越长,它就很难跟随如果你不这么做。好的,我是新来的,所以请不要介意。$('iframeId')[0]。contentWindow.location.reload(true);在iframe id之前必须“#”吗?是的,因为它是iframe,所以它是必需的。或者,您可以删除iframe并刷新DIV容器。为DIV容器调整此代码很容易。它在000webhost.com上不起作用。我有一个解决方案,但我已经失去了它,解决方案是使用for循环,它工作得很好,但我删除了错误的脚本
var tT;
var timer=20;
var stop;
$(document).ready(function(){
tT=document.getElementById('div-ID');
tT.value=timer;
stop=setInterval(function(){
if(timer>0){
timer--;
tT.value=timer;
}else{clearInterval(stop);
}},1000);
setInterval(function(){ // I changed setTimeout here
document.getElementById('Iframe-ID').src = document.getElementById('Iframe-ID').src;
timer=20;
},20000);
});