0

我尝试了各种方法来确保我的计时器变量是全局的(我相信它是全局的)但是为什么我不能清除间隔?

var timer;    

function refreshtimer(timer) {
  stoptimer(timer);
  timer = window.setInterval(postmsg, time*1000);
}

function stoptimer(timer) {
  window.clearInterval(timer);
  timer = null;
}

我相信这是相关的代码部分;但是,可以在此处找到完整的代码。

4

1 回答 1

4

您不能对函数的参数和全局变量使用相同的变量名,并且可以访问两者。名为的参数timer优先,因此您无法访问也名为的全局变量timer

将全局变量的名称更改为timerId,然后您可以唯一地引用您要引用的那个。

var timerID;    

function refreshTimer() {
    stopTimer();
    timerID = setInterval(postmsg, time*1000);
}

function stopTimer() {
    clearInterval(timerID);
}
于 2014-05-02T00:38:06.353 回答