2011-10-07 6 views
0

나는 jQuery Countdown 플러그인을 사용하고 있으며 빠른 쿼리를 사용하고 있습니다.jQuery 카운트 다운 - 타이머 재설정

내 코드는 현재 다음과 같습니다

function doCountdown(){ 
    var nextNoon = new Date(); 
    if (nextNoon.getHours()>=12){ nextNoon.setDate(nextNoon.getDate()+1); } 
    nextNoon.setHours(11,30,0,0); 

    $('h3 .timer strong').countdown({until: nextNoon, compact: true, 
     description: '', onExpiry: function(){doCountdown()}}); 
} 

$(window).load(function(){ 
    doCountdown(); 
}); 

그래서 기본적으로, 그것은 아래로 다음 11:30AM 전까지 계산합니다. 그러나 카운터가 재설정되어 11:30AM에 도달하면 자동으로 타이머의 23:59:59으로 이동합니다.

함수가 onExpiry (console.log으로 테스트되었고 확실히 호출 함)이라도 현재는 00:00:00에 머물러 있습니다.

자바 스크립트가 페이지로드 시간을 기반으로하고 저장하기 때문에 그렇습니까?

+0

을 [이 도움이 될] (http://stackoverflow.com/a/10769296/456135) – anu

답변

1

nextNoon 생성이 오전 11시 30 분에서 오후 12시 사이에 잘못 계산되기 때문입니다. 30 분 동안 if()은 false로 평가되어 현재 시간의 오전 11시 30 분으로 시간을 설정합니다. 그러나 우리는 이미 11시 30 분에서 12시 사이이므로 그 시간을 이미 지나쳤습니다. 그래서 카운트 다운은 단지 0으로 갈 것입니다.

당신은 다음과 같이 할 필요가

:

var todaysNoon = new Date(), nextNoon = new Date(); 
todaysNoon.setHours(11,30,0,0); 
if (todaysNoon <= nextNoon){ nextNoon.setDate(nextNoon.getDate()+1); } 
nextNoon.setHours(11,30,0,0); 
+0

감사합니다! 이것은 효과가있는 것 같습니다! – rickyduck

+0

@rickyduck, 즐거움. – davin