【问题标题】:Call js-function using JQuery timer使用 JQuery 计时器调用 js-function
【发布时间】:2011-01-18 16:45:58
【问题描述】:

有没有为 JQuery 实现一个计时器,例如。每 10 秒它需要调用一个 js 函数。

我尝试了以下

window.setTimeout(function() {
 alert('test');
}, 10000);

但这只会执行一次,然后再也不会执行。

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    您可以使用 setInterval() 方法也可以调用您的 setTimeout() 例如,来自您的自定义函数

    function everyTenSec(){
      console.log("done");
      setTimeout(everyTenSec,10000);
    }
    everyTenSec();
    

    【讨论】:

      【解决方案2】:

      可能想查看 jQuery Timer 来管理一个或多个计时器。

      http://code.google.com/p/jquery-timer/

      var timer = $.timer(yourfunction, 10000);
      
      function yourfunction() { alert('test'); }
      

      然后你可以控制它:

      timer.play();
      timer.pause();
      timer.toggle();
      timer.once();
      etc...
      

      【讨论】:

      • 不错的实用程序。允许控制生命周期。
      • 当一个定时器需要控制另一个定时器时非常有用
      • 我收到一个错误 :( "TypeError: $.timer is not a function"
      • 那是因为你需要从链接中获取插件。
      【解决方案3】:

      setInterval 是你想要的功能。每 x 毫秒重复一次。

      window.setInterval(function() {
          alert('test');
      }, 10000);
      

      【讨论】:

        【解决方案4】:

        你可以用这个:

        window.setInterval(yourfunction, 10000);
        
        function yourfunction() { alert('test'); }
        

        【讨论】:

          【解决方案5】:
          window.setInterval(function() {
           alert('test');
          }, 10000);
          

          window.setInterval

          重复调用一个函数, 每次调用之间的固定时间延迟 那个函数。

          【讨论】:

            【解决方案6】:

            试试 jQueryTimers,他们有很棒的轮询功能

            http://plugins.jquery.com/project/timers

            【讨论】:

            • 答案中的链接已失效。
            【解决方案7】:

            jQuery 1.4 还包含一个 .delay(duration, [ queueName ] ) 方法,如果您只需要触发一次并且已经开始使用该版本。

            $('#foo').slideUp(300).delay(800).fadeIn(400);
            

            http://api.jquery.com/delay/

            糟糕......我的错误是你正在寻找一个事件来继续触发。我将把它留在这里,有人可能会觉得它有帮助。

            【讨论】:

              【解决方案8】:
              function run() {
                  window.setTimeout(
                       "run()",
                       1000
                  );
              }
              

              【讨论】:

              • -1,因为给eval提供一个字符串而不是简单地提供函数是太多bug的根源。
              猜你喜欢
              • 1970-01-01
              • 2018-04-13
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-10-13
              • 1970-01-01
              相关资源
              最近更新 更多