Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

133
Visualizações
Changing a HTML element at a certain time and date

I have an open and closed indicator (Thanks to those who helped me!) that shows I am open from 8:00 AM to 10:00 PM and from 10:00 PM to 8:00 AM I am closed, but it shows this even on a weekend when I am not open. Can you help me make the Javascript say I am closed when it is a weekend and on a holiday like December 24-25? Below will be my current code. Thanks!

Javascript:

var messageElement = document.getElementById("message");
var circleElement = document.getElementById("circle");

const refreshStatus = () => {
  // Set the current time
  let currentDate = new Date().getHours();
  // If the time is between 8 am and 10 pm
  if (currentDate >= 8 && currentDate <= 21) {
    // Update text and add classes
    messageElement.innerHTML = "We are open until 10 PM";
    circleElement.className = 'open-circle';
    messageElement.className = 'open-p';
  } else {
    // 21 pm to 8 am
    messageElement.innerHTML = "We are closed until 8 AM";
    circleElement.className = 'closed-circle';
    messageElement.className = 'closed-p';
  }
}

// run when starting
refreshStatus();

// updates every 8 seconds
setInterval(refreshStatus, 8000);

CSS:

/* Start indicator CSS */

.open-circle {
  position: relative;
  top: 23rem;
  height: 1.5625rem;
  width: 1.5625rem;
  background-color: #00BF13;
  border-radius: 50%;
  display: inline-block;
}

.open-p {
  position: relative;
  top: 23rem;
  color: #00BF13;
  font-weight: bold;
  display: inline-block;
  width: 8rem;
}

.closed-circle {
  position: relative;
  top: 23rem;
  height: 1.5625rem;
  width: 1.5625rem;
  background-color: #ea001d;
  border-radius: 50%;
  display: inline-block;
}

.closed-p {
  position: relative;
  top: 23rem;
  color: #ea001d;
  font-weight: bold;
  display: inline-block;
  width: 8rem;
}

/* End indicator CSS */

HTML:

<!-- Start status indicator -->

<div id="circle"></div>
<p id="message">We are open until 10 PM</p>
<script src="js/open-closed-indicator.js"></script>

<!-- End status indicator -->
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

You can achieve this using getDate() method for the Christmas period and use getDay() to check if it's a weekend.

Days in JS are 0 = sunday and 6 = Saturday. Refer to the comments in each line for more info.

For Christmas period dates you need to check whether it's the 11 months which is December and the date is 24 or 25th December.

To show different closed messages I am using JS ternary operator which helps to write less code and get the same results.

Live working demo.

var messageElement = document.getElementById("message");
var circleElement = document.getElementById("circle");

const refreshStatus = () => {
  // Get dates/time/hours
  let today = new Date(); //today date
  let currentTime = today.getHours(); //get hours
  let areWeekends = (today.getDay() == 6 || today.getDay() == 0) //get weekends
  let santaDays = (today.getMonth() == 11 && (today.getDate() == 24 || today.getDate() == 25)) //get christmas dates

  //Show available if this matches
  if (currentTime >= 8 && currentTime <= 21 && !areWeekends && !santaDays) {
    // Update text and add classes
    messageElement.innerHTML = "We are open until 10 PM";
    circleElement.className = 'open-circle';
    messageElement.className = 'open-p';
  } else {
    //change text based on weekend / christmas or not - Using ternary operator Javascript
    messageElement.innerHTML = `We are closed  ${areWeekends ? ' - weekend' : santaDays ? 'Christmas' : 'until 8am'}`;
    circleElement.className = 'closed-circle';
    messageElement.className = 'closed-p';
  }
}

// run when starting
refreshStatus();

// updates every 8 seconds
setInterval(refreshStatus, 8000);
/* Start indicator CSS */

.open-circle {
  position: relative;
  top: 23rem;
  height: 1.5625rem;
  width: 1.5625rem;
  background-color: #00BF13;
  border-radius: 50%;
  display: inline-block;
}

.open-p {
  position: relative;
  top: 23rem;
  color: #00BF13;
  font-weight: bold;
  display: inline-block;
  width: 8rem;
}

.closed-circle {
  position: relative;
  top: 23rem;
  height: 1.5625rem;
  width: 1.5625rem;
  background-color: #ea001d;
  border-radius: 50%;
  display: inline-block;
}

.closed-p {
  position: relative;
  top: 23rem;
  color: #ea001d;
  font-weight: bold;
  display: inline-block;
  width: 8rem;
}


/* End indicator CSS */
<!-- Start status indicator -->

<div id="circle"></div>
<p id="message">We are open until 10 PM</p>
<!-- //<script src="js/open-closed-indicator.js"></script>
 -->
<!-- End status indicator -->

about 4 years ago · Juan Pablo Isaza Relatório

0

try this


// set your holidays
const holidays = [
    {'2022-12-25' : 'christmas'},
    {'2022-01-29' : 'testHoliday'},
]

const refreshStatus = () => {


    // added code
    let date = new Date();
    let dayOfWeek = date.getDay(); // 6: saturday, 0: sunday
    let today = date.getFullYear() + '-' + String(date.getMonth()+1).padStart(2, '0') + '-' + date.getDate(); // 2022-01-29
    let isHoliday = holidays.filter(h => h[today]).length > 0 || dayOfWeek == 6 || dayOfWeek == 9;
    //

    // Set the current time
    let currentDate = date.getHours();
    // If the time is between 8 am and 10 pm

    if (currentDate >= 8 && currentDate <= 21 && !isHoliday) {
        // Update text and add classes
        messageElement.innerHTML = "We are open until 10 PM";
        circleElement.className = "open-circle";
        messageElement.className = "open-p";
    } else {
        // 21 pm to 8 am
        messageElement.innerHTML = "We are closed until 8 AM";
        circleElement.className = "closed-circle";
        messageElement.className = "closed-p";
    }
};

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda