【问题标题】:I have the JS function that is invoked every 3 minutes by setInterval - how can I invoke it when page loads too?我有 setInterval 每 3 分钟调用一次的 JS 函数 - 当页面加载时如何调用它?
【发布时间】:2015-05-28 11:34:52
【问题描述】:

我有以下脚本:

    var results;
var cursor = 0;

function myFunction () {
    $.getJSON('list.php', function(json) {
        results = json.result;
        cursor = 0;

        // Now start printing
        printNext();
    });
}

function printNext(){
    if(cursor == results.length){
        // Reset the cursor back to the beginning.
        cursor = 0;
    }

    // Print the key1 in the div.
    //$('#device-content-user-text').html(results[cursor].key1);
    $('#device-content-user-text').hide('fast', function(){ $('#device-content-user-text').html(results[cursor].key1); $('#device-content-user-text').show('fast'); });

    // Set a delay for the current item to stay
    // Delay is key2 * 1000 seconds
    setTimeout(function(){
        printNext();
    }, results[cursor].key2 * 1000);

    // Advance the cursor.
    cursor++;
}

var interval = setInterval(function () { 
    myFunction(); 
}, 300000);  //make sql query every 5 minutes

它从页面 list.php 中获取 JSON 字符串,并在 #device-content-user-text div 中一一打印结果。它每五分钟完成一次,当用户加载页面时,计时器开始计时。如何在页面加载时(通常每 5 分钟一次)调用此函数? 谢谢

【问题讨论】:

  • 您的setInterval 只调用myFunction(),所以只需在间隔之外调用myFunction()
  • 你可以在文件准备好时调用它:$(myFunction);

标签: javascript jquery


【解决方案1】:

document.ready()点赞

$(document).ready(function(){
    var interval = setInterval(function () { 
        myFunction(); 
    }, 300000);  //make sql query every 5 minutes
    myFunction();
});

另外,如果你只是在 setInterval 的匿名函数中调用 myFunction,只需传递函数引用本身

$(document).ready(function() {
        var interval = setInterval(myFunction, 300000); //make sql query every 5 minutes
        myFunction();
    });

更新

根据您所说的页面“加载”的含义,document.readyload() 之间可能存在天壤之别。如果您想绝对确定所有内容都已加载(包括框架、图像等),请执行

$(window).load(function() {
            var interval = setInterval(myFunction, 300000); 
            myFunction();
        });

否则,如果DOM 已准备好就足够了,请坚持使用document.ready()

jQuery - What are differences between $(document).ready and $(window).load?

【讨论】:

  • 附带说明,文档就绪事件和page loads 之间存在巨大差异,但我想它会在这里工作
  • @A.Wolff,等一下,查一下 :)
  • 看到OP使用代码的逻辑,ready事件就足够了;)
  • @A.Wolff,我仍然觉得关注细节很有用。非常感谢您的精彩提示!更新了我的答案
【解决方案2】:
 //Document ready
   $(function(){

        //call function
        myFunction();

       //put your interval here

    });

【讨论】:

    猜你喜欢
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 2017-11-15
    • 1970-01-01
    相关资源
    最近更新 更多