Display Block По времени

376
26 июня 2017, 17:58

Привет всем.

как можно сделать в Js Display Block по часам?

<div class="08" style="display:block"><h3> lorem 60</h3> </div> 
<div class="09" style="display:none"><h3> lorem 60</h3> </div> 
<div class="10" style="display:none"><h3> lorem 60</h3> </div> 
<div class="11" style="display:none"><h3> lorem 60</h3> </div> 
<div class="12" style="display:none"><h3> lorem 60</h3> </div> 
<div class="13" style="display:none"><h3> lorem 60</h3> </div> 
<div class="14" style="display:none"><h3> lorem 60</h3> </div>
<div class="15" style="display:none"><h3> lorem 60</h3> </div> 
<div class="16" style="display:none"><h3> lorem 60</h3> </div> 
<div class="17" style="display:none"><h3> lorem 60</h3> </div> 
<div class="default"  style="display:none"><h3> lorem 60</h3> </div> 

Например с 9:00 до 09:59 утра он должен классу 9 дать Display:block а диву с классом 8 дать Display:none.

А если например 18:00 до 07:59 дать display:block классу default и дисплэй ноне классу 17.

как такое можно реализовать? кто может помочь?

Answer 1

Блок будет зеленым c каждой 20 секунды по каждую 40вую.

const block = test; 
calculate_timeout = seconds => { 
  now = new Date(), next = new Date(); 
  next.setSeconds(seconds); 
  if(next.getTime() <= now.getTime()) 
    next.setMinutes(next.getMinutes()+1); 
  return next.getTime() - now.getTime(); 
} 
(function timer_callback() { 
  let now = new Date; 
  if(now.getSeconds() >= 20 && now.getSeconds() < 40){ 
    block.classList.add('now'); 
    setTimeout(timer_callback, calculate_timeout(40)); 
  }else{ 
    block.classList.remove('now'); 
    setTimeout(timer_callback, calculate_timeout(20)); 
  } 
})();
#test.now{ 
  background: green; 
} 
#test{ 
  background: red; 
}
<div id="test">test</div>

Answer 2

Это только для одного времени и одного элемента. Для остальных повторить не сложно. Для проверки, можно установить в строку if (hours >= 9 && hours < 10) { свой интервал времени, по своему часовому поясу.

setInterval(function repeatTimer() { 
    let date = new Date(); 
    let hours = date.getHours(); 
    if (hours >= 9 && hours < 10) { 
        document.body.querySelector('div[class="09"]').style.display = 'block'; 
    } 
}, 1000);
<div class="08" style="display:block"><h3> lorem 60</h3> </div> 
	<div class="09" style="display:none"><h3> lorem 60</h3> </div> 
	<div class="10" style="display:none"><h3> lorem 60</h3> </div> 
	<div class="11" style="display:none"><h3> lorem 60</h3> </div> 
	<div class="12" style="display:none"><h3> lorem 60</h3> </div> 
	<div class="13" style="display:none"><h3> lorem 60</h3> </div> 
	<div class="14" style="display:none"><h3> lorem 60</h3> </div> 
	<div class="15" style="display:none"><h3> lorem 60</h3> </div> 
	<div class="16" style="display:none"><h3> lorem 60</h3> </div> 
	<div class="17" style="display:none"><h3> lorem 60</h3> </div> 
	<div class="default"  style="display:none"><h3> lorem 60</h3> </div>

Answer 3

var date = new Date(); 
var time = date.getHours(); 
 
if ( 9 < time < 10){ 
     // код 
}

READ ALSO
Как загрузить html файл из сети в приложение, чтоб потом смотреть его оффлайн?

Как загрузить html файл из сети в приложение, чтоб потом смотреть его оффлайн?

Как загрузить html файл из сети в приложение, чтоб потом смотреть его оффлайн?

444
Превращение ссылки в кнопку

Превращение ссылки в кнопку

Возможно ли при помощи JQuery заставить <a> выполнять действие <input type="submit">? Если "да", то как и какие методы использовать?

278
Почему тут не нужен закрывающий тег

Почему тут не нужен закрывающий тег

Я открыл <p>, вложил туда <ul>, а чекер показывает, что закрывать <p> не надо, мол, и так все окПодскажите, пожалуйста

521