如何清除以 setInterval 启动的计时器?

How can I clear a timer started with setInterval?

我试图让我的图像在我将鼠标悬停在图像上时移动,然后让它在停止前保持移动 3 秒。我可以让它移动,但不能停止。有任何想法吗?这是我的代码段:

var time = setInterval(timer, 300);

onEvent("image3", "mouseover", function() {
  var x = getXPosition("image3");
  var y = getYPosition("image3");
  while ((getXPosition("image3") = x && getYPosition("image3") = y)) {

  }
});

function timer() {
  setPosition("image3", randomNumber(0, 250), randomNumber(0, 250), 100, 100);
  clearInterval();

}

使用clearInterval时需要指定清除间隔:

clearInterval(time);

clearInterval()接受1个参数——要清除的定时器对应的intervalID。

intervalID

The identifier of the repeated action you want to cancel. This ID was returned by the corresponding call to setInterval(). 1

将变量 time 传递给对 clearInterval() 的调用:

clearInterval(time);

请参阅下面的演示。

var time = setInterval(timer, 300);
var startTime;

function timer() {
  if (startTime === undefined) {
    startTime = new Date();
  } else {
    diff = (new Date() - startTime) / 1000;
    console.log('timer() - elapsed time: ', diff);
    if (diff >= 3) {
      console.log('clearing interval');
      clearInterval(time);
    }
  }
}


1https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/clearInterval