停止/启动一个自我回复的函数

发布于 2024-10-17 11:56:50 字数 481 浏览 4 评论 0原文

我有这样的代码:

function functionName(){
    // blablabla
    // dosomething
    setTimeout(functionName, 5000);
}

好吧,如果用户按下一个按钮,该功能就会停止回复自己,我想做到这一点...... 这样代码就变成了

function functionName(){
    // blablabla
    // dosomething

}

,当他再次按下按钮时,它会再次启动...

function functionName(){
    // blablabla
    // dosomething
    setTimeout(functionName, 5000);
}

我该如何做到这一点(使用jquery)?

问候

I have this code:

function functionName(){
    // blablabla
    // dosomething
    setTimeout(functionName, 5000);
}

Well i want to make it if a user presses a button that the function stops replying itself...
So that the code becomes

function functionName(){
    // blablabla
    // dosomething

}

and when he presses a button again that it starts again...

function functionName(){
    // blablabla
    // dosomething
    setTimeout(functionName, 5000);
}

How can i do that (with jquery) ?

Greetings

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

绿萝 2024-10-24 11:56:50

setTimeout 返回一个访问 ID。该 id 可用于调用 clearTimeout() 来停止当前超时,从而结束“功能循环”;

function functionName() {
    if( this.tID ) {
        clearInterval(tID);
        delete this.tID;
    }

    // do something

    this.tID = setTimeout(functionName, 5000);
}

this 将引用像这样调用的 window 对象。使用您自己的命名空间来存储 id 可能是一个更好的主意。

setTimeout returns an access-id. That id can be used to call clearTimeout() which stops the current timeout and therefore ends your "functional-loop";

function functionName() {
    if( this.tID ) {
        clearInterval(tID);
        delete this.tID;
    }

    // do something

    this.tID = setTimeout(functionName, 5000);
}

this would refer the window object called just like that. Probably a better idea to use your own namespace to store the id.

煮酒 2024-10-24 11:56:50

它非常简单,您可以使用 JQuery 中的toggle() 并向其传递两个方法。一个启动函数,另一个停止超时。

var timeoutId;

function functionName(){
    // blablabla
    // dosomething

    timeoutId = setTimeout(functionName, 2000);
}


$(document).ready(function(){   
    $('#myButton').toggle( function() {
        functionName();
    }, function() {
        clearTimeout(timeoutId);
    });
});

Its pretty simple you can use toggle() from JQuery and pass it two methods. One that starts the function and the other that stops the timeout.

var timeoutId;

function functionName(){
    // blablabla
    // dosomething

    timeoutId = setTimeout(functionName, 2000);
}


$(document).ready(function(){   
    $('#myButton').toggle( function() {
        functionName();
    }, function() {
        clearTimeout(timeoutId);
    });
});
阳光①夏 2024-10-24 11:56:50

要停止计时器,您可以使用clearTimeout

var timerId = setTimeout(functionName, 5000);

clearTimeout(timerId);

至于运行函数的逻辑,您只需检查单击了哪个按钮即可。

我不是 100% 清楚你在寻找什么,所以这至少会回答你关于如何停止计时器的问题。

To stop the timer you can use clearTimeout.

var timerId = setTimeout(functionName, 5000);

clearTimeout(timerId);

As for the logic to run a function you can just check to see which button was clicked.

I wasn't 100% clear on what you were looking for so this will at least answer your question as to how to stop a timer.

凉世弥音 2024-10-24 11:56:50

这是设置切换函数以将 setTimeout 操作从打开切换到关闭的一种方法:

(function toggler() { // don't pollute the global scope

  var temp;
  var running = false;
  var myfunc = function() {
    do_your_stuff_here(); // a pulsing red box in the Fiddle example
    running = true;
    temp = setTimeout(myfunc, 1000);
  }

  $('#toggle').click(function(e) { // toggler control is a link
    e.preventDefault();
    if (running) {
      clearTimeout(temp); // turn it off
      running = false;
    } else {
      myfunc(); // or turn it on
    }
  });

  myfunc(); // kickstart it

})();

这是一个有效的小提琴:http: //jsfiddle.net/redler/XKTW9/

Here's one way to set up a toggling function to alternate the setTimeout action from on to off:

(function toggler() { // don't pollute the global scope

  var temp;
  var running = false;
  var myfunc = function() {
    do_your_stuff_here(); // a pulsing red box in the Fiddle example
    running = true;
    temp = setTimeout(myfunc, 1000);
  }

  $('#toggle').click(function(e) { // toggler control is a link
    e.preventDefault();
    if (running) {
      clearTimeout(temp); // turn it off
      running = false;
    } else {
      myfunc(); // or turn it on
    }
  });

  myfunc(); // kickstart it

})();

Here's a working fiddle: http://jsfiddle.net/redler/XKTW9/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文