【问题标题】:Refresh Div with Jquery at fixed time在固定时间用 Jquery 刷新 Div
【发布时间】:2011-02-02 13:29:49
【问题描述】:

我有一个 php 脚本,它可以告诉我下一班车什么时候到,现在我每分钟左右使用 jquery 将它刷新到一个 div 中。现在,因为我知道数据会改变的时间(总线来了之后),我希望它在这个时候刷新 div(或者就在之后,并不重要)。

我应该指出,我对 js 还很陌生,但这就是我目前所掌握的:

    var nextbustime = $('#bus').contents();
var nextbustime = new Date(nextbustime);
var now = new Date();

var t = nextbustime.getTime() - now.getTime();


var refreshId = setTimeout(function()
{
    $('#bus').fadeOut("slow").load('modules/bus.php?randval='+ Math.random()).fadeIn("slow");
}, t);

div 最初是使用 php 包含加载的。当然,我所做的根本不起作用。

我需要一些循环吗?我需要刷新时间计算器吗?

请帮忙!

提前谢谢...

【问题讨论】:

  • nextbustime 取什么值(第一次设置时)?另请注意,第二个 var 不应该存在 - 您没有重新声明变量,只是更改它的值。

标签: javascript jquery ajax refresh


【解决方案1】:

既然您一直在使用 jQuery,请在此处查看此 jQuery 插件:jQuery timer plugin

【讨论】:

    【解决方案2】:

    我从您的陈述中假设代码适用于第一次刷新?你需要做的是处理接下来的几个。由于时间可能会有所不同(看起来),setInterval 可能不适合你。应该在每次超时结束时再次调用您的函数。

    $(document).ready(function() {
        changeToNextBus();
    });
    
    function changeToNextBus() {
        var nextbustime = $('#bus').contents();
        var nextbustime = new Date(nextbustime);
        var now = new Date();
    
        var t = nextbustime.getTime() - now.getTime();
    
        var refreshId = setTimeout(function()
        {
            $('#bus').fadeOut("slow").
                      load('modules/bus.php?randval='+ Math.random()).
                      fadeIn("slow");
            changeToNextBus();
        }, t);
    }
    

    【讨论】:

    • 不,它在第一次刷新时不起作用,这是问题的一部分......我只是尝试了你的建议(和变体),它会导致一个很大的循环...无论如何,谢谢!
    • @Ben C,t 的值对于您想要刷新的秒数是否正确?我不确定您将如何在没有循环的情况下执行此操作 - 这不是重点吗?您只需要循环仅在设定的时间间隔内发生。此外,是否正在加载 bus.php 中的 JavaScript?还是在别处?我的代码假设在别处。
    猜你喜欢
    • 2013-12-03
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    • 2014-07-30
    • 1970-01-01
    • 1970-01-01
    • 2012-05-06
    相关资源
    最近更新 更多