1

我想setTimeout()在点击发生后打电话。

如果用户在过去之前再次单击300ms,我想停止该计时器,启动另一个功能并重新启动原始计时器。

我知道,setTimeout()但我不确定如何解决这个问题。

4

2 回答 2

3

JavaScript:

myTimeout = setTimeout(function() {
                // this will fire in 300ms if you don't perform some other action!
          },300); 

document.getElementById("button").click = function() {
   // button clicked, stop the timeout
   clearTimeout(myTimeout);
};

HTML:

<button id="button">Click me</button>

setTimeout 启动 300 毫秒计时器。单击处理程序将单击事件绑定到页面上的按钮,当单击该按钮时,将使用 clearTimeout 停止计时器。

当您调用 setTimeout 时,将其分配给一个变量。然后,您可以稍后通过调用 clearTimeout 使用该变量来停止计时器。

您可以对任何事件使用相同的技术,例如按键、鼠标悬停事件、按钮或 DOM 元素点击等等。

请注意,相同的过程也适用于 setInterval。

myInterval = setInterval(function() {
               // do stuff every 300ms
             },300);

clearInterval(myInterval);  // stop the interval

使用 addEventListener:

function start() {
    window.addEventListener("click", function() { 
        timeout = setTimeout(function() {
            // do stuff after 300ms after the first click
            clearTimeout(timeout);
            start();
        }, 300)
    }, false);
}

上面应该在页面上绑定一个全局点击监听器,并在点击后递归清除并重新启动计时器。如果没有点击,监听器就会停止,但这应该让你开始。

于 2012-04-09T03:44:45.807 回答
0

我认为,您可以为此使用超时... window.setTimeout("", 300);

我不是你想要做什么......但是,我希望这会对你有所帮助。

于 2012-04-09T03:39:58.207 回答