Jquery每日定时器失败

时间:2011-09-01 20:48:03

标签: jquery timer

我正在使用这个jQuery代码在本地上午10点左右显示。

在上午10点到下午14点之间,它删除了一些图像。

然后在14:00之后它应该显示时间,直到上午10点。它还为周末添加了抵消额。

它大部分时间都非常出色,但它似乎在14:00之后会超过时间......

任何人都可以看到为什么会失败,我一直在寻找它...现在我只是被困惑了!请帮忙!

$(document).ready(function() {
// 24 hour based
var targetTime = 1000;
var targetHour = 10;
var openingTime = 1400;
var openingHour = 14;

var currentTime = new Date();

// sun 0 mon 1 ... fri 5 sat 6
var currentDay = currentTime.getDay();

var offset = 24;
// friday
if (currentDay === 5) {
    offset = 60;
} // saturday
else if (currentDay === 6) {
    offset = 48;
}

var the_current_time = ''+ currentTime.getHours() + '' + currentTime.getMinutes() + '';



if( the_current_time > targetTime && the_current_time < openingTime ) {

    var time_hours = (openingHour + offset) - currentTime.getHours() - 1;
    var time_min = 60 - currentTime.getMinutes();
    var time_seconds = 60 - currentTime.getSeconds();

    $('#hours_left').append(time_hours, ':',time_min < 10 ? "0" : "" , time_min , ':' , time_seconds < 10 ? "0" : "" , time_seconds);
    $('#watch_image').attr('src','http://cdn.shopify.com/s/files/1/0085/1702/t/1/assets/closed-until-icon.png');
    $('#time-left-banner').css('width','275px');
    $('.add-to-button').css('display','none');
    $('#purchase').css('display','none');


}
else if( the_current_time > targetTime && the_current_time > openingTime ) {

     var time_hours = (targetHour + offset) - currentTime.getHours() - 1;
     var time_min = 60 - currentTime.getMinutes();
     var time_seconds = 60 - currentTime.getSeconds();

    $('#hours_left').append(time_hours, ':',time_min < 10 ? "0" : "" , time_min , ':' , time_seconds < 10 ? "0" : "" , time_seconds);

}

else {
 var time_hours = (targetHour + offset) - currentTime.getHours() - 1;
 var time_min = 60 - currentTime.getMinutes();
 var time_seconds = 60 - currentTime.getSeconds();

 $('#hours_left').append(time_hours, ':',time_min < 10 ? "0" : "" , time_min , ':' , time_seconds < 10 ? "0" : "" , time_seconds);  
}

});

1 个答案:

答案 0 :(得分:2)

首先,我会简化代码。所有三个分支中的三个var计算似乎是相同的。 #hours_left的更新也是如此。您应该能够将它们从if中分解出来。如果我没有遗漏某些东西,这也会减少if分支从3到1的数量。

至于问题,我会看the_current_time。你不是零填充分钟,所以10:05将变为105,或1:05。我无法看到这会导致任何戏剧,因为计算不依赖于此值,但它会改变你将采用的if分支。


啊,我在time_hours的第一个分支中错过了if计算差异。它使用opening_hours代替target_hours。这解释了为什么错误的the_current_time会对报告的值产生影响。