【问题标题】:how do you run a function every 5 seconds in javascript [duplicate]你如何在javascript中每5秒运行一次函数[重复]
【发布时间】:2013-11-15 15:23:20
【问题描述】:

我正在尝试创建一个 javascript,如果我单击 div1,我需要 load_data1() 函数每 5 秒刷新一次。如果用户点击 div2 或 div3,我需要 load_data1() 函数停止。如下面的代码,当我单击 div1 时,load_data1() 函数在 5 秒后运行并停止,之后不再运行,有什么想法我可能在这里遗漏的吗?

 $(document).ready(function(){

$.ajaxSetup({ cache: false });
    var timeout;
     function timeout_init() {
        timeout=setTimeout('load_data1()', 5000);
        return timeout;
    }



    $("#div1").click(function() {
        timeout_init();
        });

    $("#div2").click(function() {
            clearTimeout(timeout);
            load_data2();
    });

    $("#div3").click(function() {
             clearTimeout(timeout);
             load_data3();
    });

});

【问题讨论】:

  • 查看 diff b/w setInterval 和 setTimeout。也不要在这些上使用字符串表达式,而是使用函数引用。
  • 为了将来参考,看在上帝的份上先谷歌。简单搜索how do you run a function every 5 seconds in javascript 就能解决您的问题。
  • 如果你只是用谷歌搜索你的标题,你的答案会在第一个结果中......
  • @PSL,我对javascript不是很熟悉,能详细点吗?
  • 我能够用 setInterval 替换 setTimeout,它起作用了。谢谢大家。

标签: javascript jquery


【解决方案1】:

你可以试试这样的:

window.setInterval(function(){
  /// call your function here
}, 5000);

这是一个匿名函数,每 5 秒运行一次。

【讨论】:

    【解决方案2】:

    你想使用setInterval()而不是setTimeout,它只会触发一次,setInterval会一直触发直到你清除它

    【讨论】:

    • 我遵循了您的建议,它正在工作,但我确实有一个顾虑。如果 setInterval 值为 60000 毫秒,当我单击一个选项卡时,它会等待 60000 毫秒来加载页面。我真的需要在单击选项卡时立即加载页面,然后每 60000 毫秒刷新一次。有什么想法我会怎么做?
    • 只需在 setInterval 之前先调用您的函数。从 timeout_init 函数中的示例中,您可以执行 load_data2(); setInterval(load_data2, 6000);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    • 2022-12-24
    • 1970-01-01
    • 2018-10-28
    • 1970-01-01
    • 2012-01-09
    • 2011-11-03
    相关资源
    最近更新 更多