2012-03-07 100 views
1

好了,所以我使用的是jquery countdown plugin和声明如下正在重置计数器,每30秒

$j(document).ready(function() { 
$j('#clock').countdown({ to : "#{event.start_date.strftime("%Y:%m:%d:%H:%M")}", remaining : "#{event.start_date - Time.now}", display_on_complete : 'list', hide_on_complete : 'countdown' }); 
}); 

这个工作正常,但每隔30秒我需要从这个AJAX调用更新这个倒计时随着时间的推移

$j(document).ready(function() { 
    function refresh() { 
    $j.ajax({ 
    type: "GET", 
    url: "http://developer.yahooapis.com/TimeService/V1/getTime?appid=YahooDemo&output=json", 
    dataType: "jsonp", 
    success: function(data){ 
    unix_timestamp = data.Result.Timestamp 
    var json_date = new Date(unix_timestamp*1000); 
    console.log(json_date); 
    setTimeout(refresh, 30000); 
    } 
}); 

正如你可以看到日期是json_date变量.....,我需要更换Time.now在倒计时的方法,每30秒......就如何实现这一目标

+0

我没有看到你从内部任何地方调用refresh()函数吗?我知道你想循环它,但它看起来并不像你已经初始化它。 – 2012-03-07 04:27:44

+0

我看不出您的代码有问题,唯一可能的问题可能是上下文。试着将你的函数定义为'window.refresh = function(){...};'看看事情是否有不同的表现。此外,您的代码缺少一组'});' – rkw 2012-03-07 07:48:13

回答

2

任何想法jQuery-countdown-Timer插件不支持设置任意剩余时间。

此外,该插件不需要remaining作为选项。 (也没有display_on_complete或hide_on_complete`选项,如果你链接到错误的插件,请告诉我。)

假设你想要插件有任意的剩余时间是你关心的,你必须修改该插件。

我会改变线路42〜50的jquery.countdown-timer.js到:

if (options.remaining) { 
    seconds_remaining = options.remaining; 
} else { 
    // Split the specified date/time string into an array 
    var date_elements = options.to.split(':'); 

    // Create Date objects for start and end date/times 
    var end_date = new Date (date_elements[0], date_elements[1] - 1, date_elements[2], date_elements[3], date_elements[4]); 
    var start_date = new Date(); 

    // Calculate number of seconds remain until end date/time 
    seconds_remaining = (end_date.getTime() - start_date.getTime()) * .001; 
} 

,并调用倒计时功能的AJAX调用中的下列方式:

function refresh() { 
    $j.ajax({ 
     type: "GET", 
     url: "http://developer.yahooapis.com/TimeService/V1/getTime?appid=YahooDemo&output=json", 
     dataType: "json", // your url doesn't have a callback, no need for jsonp 
     success: function(data){ 
      unix_timestamp = data.Result.Timestamp 
      var json_date = new Date(unix_timestamp*1000); 

      $j('#clock').countdown({ remaining: (event.start_date - json_date) * .001 }); 

      setTimeout(refresh, 30000); 
     } 
    }); 
} 

这是假设event对象在refresh函数范围内,$j是你的jQuery对象。

我可能完全误解了你的问题,所以让我知道我是否。

+0

我认为它可能已被修改......这里是链接http://pastie.org/3541077 – Trace 2012-03-07 13:25:55