2014-02-17 2 views
0

У меня есть таймер обратного отсчета Javascript, когда он достигает 0, он отключается, а затем сбрасывается на следующий день. Над ним у меня есть текст «Мы открыты». Я хочу скрыть этот текст, а остальная часть div «areOpen», когда обратный отсчет достигает 0. Проблема, с которой я столкнулся, скрывает div «areOpen».Скрыть Div на время суток

Website

Javascript, чтобы скрыть DIV 'wereOpen'

!function ($) { 
// get current time 
// get current time 
var d = new Date(), 
hours = d.getHours(), 
mins = d.getMinutes(); 
day = d.getDay(); 

// if day is mon-Fri and time is between 9am and 5:30pm 
if(0 < dday < 7 
&& hours >= 21 
&& (hours < 24 || hours === 24 && mins <= 00)){ 

$('.wereOpen').hide(); 
}; 
} 

Javascript для отсчета времени:

if (document.getElementById('countdown')) { 
pad = function(n, len) { // leading 0's 
    var s = n.toString(); 
    return (new Array((len - s.length + 1)).join('0')) + s; 
}; 
function countDown() { 
    var now = new Date(); 
    if ((now.getDay() >= 1) && (now.getDay() <= 7)) { // Monday to Sunday 
     var target = 21; // 21:00hrs is the cut-off point 
     if (now.getHours() < target) { // don't do anything if we're past the cut-off point 
      var hrs = (target - 1) - now.getHours(); 
      if (hrs < 0) hrs = 0; 
      var mins = 59 - now.getMinutes(); 
      if (mins < 0) mins = 0; 
      var secs = 59 - now.getSeconds(); 
      if (secs < 0) secs = 0; 
      var str = pad(hrs, 2) + ':' + pad(mins, 2) + '.<small>' + pad(secs, 2) + '</small>'; 
      document.getElementById('countdown').innerHTML = str; 
     } 
    } 
} 
var timerRunning = setInterval('countDown()', 1000); 
} 
+0

Что собственно вопрос? Вы говорите, что у вас проблемы, что? Вы не можете скрыть div? Неправильный div скрывается? Диб скрывается в неподходящее время? Произошла ошибка ...? – Teemu

+0

Условие '0

+0

Я не могу заставить div «areOpen» спрятаться. – GSaunders

ответ

1

я просто играл с совершенно иным образом решить «проблему», и я в конечном итоге со следующими, размещение, как это может быть полезно для вас

var open_times = { 
     // day    hh mm   hh mm 
     Monday: { open: [ 9, 30], close: [17, 30]}, 
     Tuesday: { open: [ 9, 30], close: [17, 30]}, 
     Wednesday: { open: [ 9, 30], close: [17, 30]}, 
     Thursday: { open: [ 9, 30], close: [17, 30]}, 
     Friday: { open: [ 9, 30], close: [17, 30]}, 
     Saturday: { open: [ 0, 0], close: [ 0, 0]}, 
     Sunday: { open: [ 0, 0], close: [ 0, 0]}, 
    }, 
    timezone = -(5*60 + 0); 

function isOpen() { 
    var d = new Date(), 
     day, open, close; 
    d.setUTCMinutes(d.getUTCMinutes() + timezone); 
    day = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'][d.getUTCDay()]; 
    open = open_times[day].open[0] * 3600000 + open_times[day].open[1] * 60000, 
    close = open_times[day].close[0] * 3600000 + open_times[day].close[1] * 60000; 
    d = +d - (d.setUTCHours(0), d.setUTCMinutes(0), d.setUTCSeconds(0), d); 
    if (open <= d && close > d) 
     return {open: true, remain: close - d}; 
    else 
     return {open: false, remain: 0}; 
} 

function updateCountDown(ms) { 
    var elm = document.getElementById('countdown'), 
     ss = pad2(Math.floor(ms/1000) % 60), 
     mm = pad2(Math.floor(ms/60000) % 60), 
     hh = pad2(Math.floor(ms/3600000) % 24); 
    if (elm) 
     elm.innerHTML = hh + ':' + mm + '.<small>' + ss + '</small>'; 
} 

function pad2(x) { 
    x = '' + x; 
    if (x.length === 1) return '0' + x; 
    if (x.length === 0) return '00'; 
    return x; 
} 

var timerRunning = setInterval(function() { 
    var time = isOpen(); 
    if (time.open) { 
     $('.wereOpen').show(); 
     updateCountDown(time.remain); 
    } else 
     $('.wereOpen').hide(); 
}, 1000); 
+0

Я понял, посмотрев ваш код. Благодаря! – GSaunders

0

Есть некоторые неправильные имена переменных в вашей первой части кода, а также как некоторые логические ошибки. По вашему комментарию, я настроил, если заявление:

if((day === 0 || day === 6) 
    || (hours < 9 || (hours >= 17 && mins > 30))) 
{ 
    $('.wereOpen').hide(); 
} 

Это заявление будет работать, если день суббота или воскресенье, или если время находится ниже 9 утра или выше 5:30 (по местному времени) браузера.

+1

Как он будет запущен, если функция, содержащая 'if', никогда не вызывается? – Teemu

+0

@Teemu Я был немного смущен относительно того, что именно он получал в своем вопросе (так же, как и вы), поэтому я просто взял удар в то, что я увидел, что это было неправильно. –

Смежные вопросы