Показывать всплывающее окно каждую пятницу и скрывать его через 24 часа

#javascript

#javascript

Вопрос:

Я настраиваю всплывающее окно, которое я хочу показывать на веб-сайте каждую пятницу, и скрываю его через 24 часа до следующей пятницы. Есть идеи?

Вот мой код и скрипка:

 var elem = document.querySelector('.elem');
  
var current = new Date();
var expiry = new Date("April 26, 2019 08:00:00");

if ( current.getTime() >= expiry.getTime() ) 
{
  elem.style.display = "none";
} 
 <div class="elem">
  <h1>Lorem ipsum</h1>
</div> 

Комментарии:

1. Не будет работать, потому что вы должны регулярно проверять свое сравнение. Здесь вы проверяете его только при загрузке страницы.

2. 24 часа с какого момента? Вы имеете в виду, что хотите показывать его в течение 24 часов после того, как посетитель впервые увидит его, или только в пятницу? Вы хотите скрыть его по умолчанию (с помощью CSS) и показывать только в том случае, если текущий день — пятница.

3. То есть вы имеете в виду, что когда пользователь открывает ваше приложение в пятницу, оно должно открывать всплывающее окно независимо от времени. (Ничего в четверг и субботу)?

Ответ №1:

Вы можете проверить день недели с помощью функции getDay()
0 для воскресенья, 1 для понедельника … 5 для пятницы

 var elem = document.querySelector('.elem');

var current = new Date();
var currentDay = current.getDay()

if (currentDay != 5 ) {
  elem.style.display = "none";
} 
 <div class="elem">
  <h1>Lorem ipsum</h1>
</div> 

Ответ №2:

Вам нужно будет проверять время от времени, используя setInterval :

 setInterval(checkTime, 60000);

function checkTime() {
  var elem = document.querySelector('.elem');

  var current = new Date();

  if ( current.getDay() != 5 amp;amp; elem.style.display == "block" ) 
  {
    elem.style.display = "none";
  }
  else if ( current.getDay() == 5 amp;amp; elem.style.display == "none" )
  {
    elem.style.display = "block";
  }
}
 

Второй параметр — это миллисекунды между каждой проверкой. Я использовал 60000 , а это одна минута. Вот несколько распространенных случаев:

 Minutes | Milliseconds
--------|-------------
1:00    | 60000
2:00    | 120000
5:00    | 300000
10:00   | 600000