我已经尝试了各种方法来确保我的计时器变量是全局的(我相信它是)但为什么我不能清除间隔?
var timer;
function refreshtimer(timer) {
stoptimer(timer);
timer = window.setInterval(postmsg, time*1000);
}
function stoptimer(timer) {
window.clearInterval(timer);
timer = null;
}
我相信这是相关的代码部分;但是,可以找到整个代码here。
答案 0 :(得分:4)
您不能为函数和全局变量的参数使用相同的变量名,并且可以同时访问这两个变量。名为timer
的参数优先,因此您无法访问名为timer
的全局变量。
将全局变量的名称更改为timerId
,然后您可以唯一引用要引用的变量。
var timerID;
function refreshTimer() {
stopTimer();
timerID = setInterval(postmsg, time*1000);
}
function stopTimer() {
clearInterval(timerID);
}