【问题标题】:Using setInterval/clearInterval effectively有效地使用 setInterval/clearInterval
【发布时间】:2011-08-17 18:50:04
【问题描述】:

我正在向我已经开发的应用程序添加新功能。我正在尝试添加一个自动渲染功能,该功能会在一定时间间隔后自动渲染屏幕的某些部分。我为此使用 setInterval,一切正常。

我的问题是,我应该如何为除一个之外的所有其他事件调用 clearInterval(intervalId) 函数。请考虑一个例子: 假设我有一些与当前屏幕相关的事件,并且我只想在“.myBtn”点击开始我的 setInterval 并停止所有其他事件。

    var intervalId = 0;

    $(".myBtn").click(function(){
        intervalId = setInterval(function(){
          alert("execute something");
        }, 2000);  
    });

   $(".otherElm").click(function(){
      // some other stuff.
   });


   $(".otherElm1").click(function(){
      // some other stuff.
   });


   $(".otherElm2").click(function(){
      // some other stuff.
   });

对于上述情况,我只知道一种停止间隔的方法,即将“clearInterval(intervalId)”放在所有其他事件中

但是,有没有其他方法可以做到这一点?

希望我已经把所有内容都说清楚了,以便人们理解我的问题。

提前致谢

【问题讨论】:

    标签: javascript jquery setinterval


    【解决方案1】:

    您的评论是正确的 - 您必须将 clearInterval(IntervalId) 放入您需要停止事件的所有事件中。这样做有问题吗?

    编辑:

    用一个类来识别它们——比如榆树。完成后,使用 $(".elm").click(clearinterval)。

    【讨论】:

    • 实际上,屏幕上有很多元素都有与之关联的事件,在这种情况下,我必须在每个元素中添加 clearInterval :(
    • 然后用一个类来识别它们,并使用 $(".elm").click(clearinterval)
    • 是的。尤其是评论修改。
    • 是的,你是对的 katspaugh,但如果没有其他问题,他在评论中的回答似乎是有用的解决方案。
    • 嘿薛定谔猫...除了您在评论中建议的方法外,我没有找到任何其他方式...请编辑您的答案并将评论中的相同信息放到答案区域,以便我接受这个答案。谢谢
    【解决方案2】:

    另一种方法是这样做:

    $(".myBtn").click(function(){
        setTimeout(someFunction,2000);  
    });
    
    var someFunction = function()
    {
        // CODE HERE
        if(conditions for stopping function are not met){
            //Run function again
            setTimeout(someFunction, 2000);
        }
    }
    

    虽然代码更多,但我发现它更易于管理,尤其是当您最终需要处理大量间隔 ID 时。

    【讨论】:

    • 这个问题是一样的——所有其他调用都需要设置“停止功能条件”
    • 可以添加一个全局布尔值(对应用程序来说是全局的),它在 someFunction 中进行了测试。如果为 true(默认),则函数运行。如果是假的。它停止。页面上的所有“停止元素”都应绑定到更改此布尔值的函数。
    • 所以你仍然需要在每一个想要阻止它的事件中加入一些东西。我同意这是一个比使用间隔并停止它们更简洁的解决方案,但是不必在每个其他按钮中编写代码的问题仍然存在。
    【解决方案3】:
    setInterval("alert('negaweblog.wordpress.com')",1000);
    

    1000 - 1 秒。

    每隔一秒,它就会提醒'negaweblog.wordpress.com'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-14
      • 2011-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多