几秒钟后JavaScript会刷新页面

时间:2017-08-20 20:57:09

标签: javascript html setinterval

我尝试使用JavaScript每18分钟刷新一次页面,但我的代码似乎无法正常工作。

这是我的代码:

function startChecking() {
    secondsleft -= 1e3;
    if (secondsleft <= 3e4) {
        document.getElementById("div_countdown").style.display = "";
        document.getElementById("timercounter").innerHTML = Math.abs(secondsleft / 1e3) + " Seconds"
    }
}

function startschedule() {
    clearInterval(timeout);
    clearInterval(interval);
    timeout = setTimeout("window.location.href=window.location.href;", threshold);
    secondsleft = threshold;
    interval = setInterval(function() {
        startChecking()
    }, 1e3)
}

function resetTimer() {
    startschedule();
    document.getElementById("div_countdown").style.display = "none";
    document.getElementById("timercounter").innerHTML = ""
}
var timeout, interval;
var threshold = 108e4;
var secondsleft = threshold;
startschedule();
window.onload = function() {
    startschedule()
}

<a id="div_countdown" style="display:none;" onclick="javascript:resetTimer();">Chat Will Refresh in <span id="timercounter"></span> Click <font color="#FA5882">here</font> to Cancel</a>

当我进入页面时,它将等待18分钟,然后如果还剩30秒,它将显示30秒并在它达到0时将其计数为0,它将刷新页面并重新开始。

但是当剩下30秒时,如果我点击30秒就不会刷新,但它会将计时器重置为18分钟。

我想制作另一个按钮,当我点击它时,按钮必须隐藏,定时器必须停止进行会话,直到我重新打开浏览器。我怎么能解决它?

1 个答案:

答案 0 :(得分:0)

唯一的变化是更短的延迟(不能等待18分钟来调试脚本)。

startChecking()中,因为您显示剩余的秒数,您应该将值减少1000(1秒)并将secondsleft除以1000 ......

间隔也应该是1000。

留下两个可自定义的数字......
最长时间为18分钟的threshold ... 以及在条件if (secondsleft <= 10000)

中显示消息的时间

在评论中提及quirimmo时,超时的clearInterval()应为clearTimeout()

function startChecking() {
    secondsleft -= 1000;
    if (secondsleft <= 10000) {
        document.getElementById("div_countdown").style.display = "";
        document.getElementById("timercounter").innerHTML = Math.abs(secondsleft / 1000) + " Seconds"
    }
}

function startschedule() {
    clearTimeout(timeout);
    clearInterval(interval);
    timeout = setTimeout("window.location.href=window.location.href;", threshold);
    secondsleft = threshold;
    interval = setInterval(function() {
        startChecking()
    }, 1000)
}

function resetTimer() {
    startschedule();
    document.getElementById("div_countdown").style.display = "none";
    document.getElementById("timercounter").innerHTML = ""
}
var timeout, interval;
var threshold = 12000;
var secondsleft = threshold;
startschedule();
window.onload = function() {
    startschedule()
}
<a id="div_countdown" style="display:none;" onclick="javascript:resetTimer();">Chat Will Refresh in 
  <span id="timercounter"></span> Click <font color="#FA5882">here</font> to Cancel
</a>

页面不会在上面的代码段中刷新,但会在CodePen

中刷新