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

时间:2017-07-11 09:06:23

标签: 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.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>

iframe: -

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

3 个答案:

答案 0 :(得分:0)

使用

setInterval(function, delay)

以下是您的功能代码

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

})();

供参考,此问题已在下面的链接中标记: Calling a function every 60 seconds

答案 1 :(得分:0)

以下是帮助您解决问题的示例代码:

sklearn
function loadlink() {
  $('#iframeId')[0].contentWindow.location.reload(true);
}

loadlink(); // This will run on page load
var count = 1;
setInterval(function() {
  $(".timer").text(count)
  count++;
  if (count == 20) {
    loadlink() // this will run after every 20 seconds
    count = 0;
  }
}, 1000);

答案 2 :(得分:0)

我遵循了Albzi的建议(谁评论了我的问题),我 使用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:<div id="Div-ID"></div> iframe:<iframe id="Iframe-ID" src="source-url"></iframe>