我正在使用这个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);
}
});
答案 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
会对报告的值产生影响。