Проблематичный c IF оператор с датой и временем сравнения в Javascript (getDay, Date, setHours, show, hide) - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь создать раздел автоматического скрытия / показа для веб-страницы в зависимости от времени и дня недели. Я хочу, чтобы раздел HTML / CSS автоматически появлялся (после загрузки страницы) каждую субботу с 9:58 до 13:04. Я считаю, что проблема связана с разделом Javascript, особенно с заявлением IF. Когда я запускаю код, отображается HTML (несмотря на то, что в настоящее время это понедельник). Я сделал очевидное и изменил значения для сравнений ПЧ, это не тот случай, когда значения для сравнений верны. Я абсолютный новичок с Javascript, поэтому любые предложения будут оценены!

Javascript

$(document).ready(function liveplayertimer() { //Declare function, start on page load
  var d = new Date(); //d is date
  var n = d.getDay(); //n is day as int, 0 to 6 Sun to Sat
  var startTime = d.setHours(9, 57); //Sets start time for show to 09:57
  var endTime = d.setHours(13, 05); //Sets end time for show to 13:05

  if ((d.getTime() > startTime && d.getTime() < endTime) && n == 6) { //If within time AND on Saturday
    $('#rcdflivediv').show(); //Show the content
  }
  else { //Else
    $('#rcdflivediv').hide(); //Hide the content
  }
}) //End of function

HTML (неполно, пока только тестовый заполнитель)

<div id="rcdflivediv" style="display: none">
  <p>Live NOW! Listen in!</p>
  <a href=" link removed "> (Removed for now)
    <p>Listen live!</p>
  </a>
</div>

и CSS, на случай, если я что-то напутал (неполный, пока только тестовый заполнитель)

#rcdflivediv {
  padding: 20px;
  font-family: Montserrat, sans-serif;
  size: 32px;
  background-color: #0077ff;
  color: #ffffff;
}

1 Ответ

0 голосов
/ 13 апреля 2020

A Date объект в JavaScript является изменяемым. Итак, если вы хотите получить разные startTime, endTime и current date, вам нужно создать для них разные объекты.

var d = new Date(); //d is date
var n = d.getDay(); //n is day as int, 0 to 6 Sun to Sat

var startTime = new Date(); 
startTime.setHours(9, 57);//Sets start time for show to 09:57

var endTime = new Date();
endTime.setHours(13, 05

Как упомянул Карстен в комментарии, вы вносите изменения исходная дата setHours.

...