在"setInterval()"中添加超时?

bla*_*afi 5 javascript

我在Divbox上有一个如下所示的setInterval函数,所以如果我离开divbox,会触发setInterval:

setInterval("playthis()", 1000);
Run Code Online (Sandbox Code Playgroud)

我想什么它做的事:如果我离开divbox,让接下来的2秒rehover它内说了,应该的setInterval 触发.

这可能吗?

Lig*_*ica 5

你可以使用堂兄弟setTimeoutclearTimeout设置一个函数回调,setInterval它只在2个不间断的秒后调用你:

var handle = null;

function yourDivboxLeaveHandler() {
   handle = setTimeout(startPlay, 2000);
}

function yourDivboxHoverHandler() {
   if (handle !== null) {
       clearTimeout(handle);
       handle = null;
   }
}

function startPlay() {
   setInterval(playthis, 1000); // use function references please, not eval
   handle = null;
}
Run Code Online (Sandbox Code Playgroud)

你会想要比这更好的变量/函数名称.

  • 或者使用匿名函数并完全省去名称。 (2认同)
  • 因此写在评论中。:) (2认同)