2010-03-30 14 views
0

我有一个php脚本告诉我下一班车何时到期,而此刻我正在使用jquery将其刷新为div,每分钟左右。现在,因为我知道数据发生变化的时间(公交车到达后),所以我希望它在此时刷新分区(或者之后,并不重要)。在固定的时间用jquery刷新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); 

股利与PHP最初装载包括。自然,我所做的一切都不起作用。

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

请帮忙!

在此先感谢...

+0

'nextbustime'在您第一次设置时会有什么价值?还要注意第二个'var'不应该在那里 - 你不会重新声明变量,只是改变它的值。 – icio 2010-05-30 11:15:26

回答

0

我从你的陈述假设代码工作为先刷新?你需要做的是处理接下来的几个。由于时间可能会有所不同(看来),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); 
} 
+0

不,它不工作的第一次刷新,这是问题的一部分... 而我只是尝试你所建议的(和变化),并且它导致一个大的ol'循环... 谢谢无论如何! – 2010-03-30 18:12:41

+0

@Ben C,t是你想要刷新的秒数的正确值吗?我不确定你是如何在没有循环的情况下做到这一点的 - 这不是重点吗?您只需要在设定的时间间隔内发生循环。 此外,是在bus.php中加载的JavaScript?还是在其他地方?我的代码假设在别处。 – justkt 2010-03-30 18:24:20