Как я могу запланировать включить / отключить элемент в HTML, используя JavaScript? - PullRequest
2 голосов
/ 23 июня 2019

Рассмотрим 4 кнопки на странице, обозначенные как Кнопка A, Кнопка B, Кнопка C и Кнопка D. При нажатии на каждую кнопку пользователь перенаправляет на другую страницу.Тем не менее, я хочу, чтобы каждая кнопка была активной в предопределенную дату и время, а цвет при наведении курсора на эту кнопку должен быть зеленым, когда она активирована.На мгновение кнопка А активируется 23 июня 2019 года с 14:00 до 16:00.Это зеленый цвет, а остальные кнопки - красные, и они деактивированы.В следующее заданное время кнопка B зеленая, активируется и так далее.Возможно ли использовать Javascript?

Обновление: Пожалуйста, помогите мне узнать, как код ниже работает с этой топологией:

HTML:
<div id="wrap">
  <header>
    <h1>How this code works?</h1>
    <div id="nav">
      <ul>
        <li><a class="active" href="#home">ITEM1</a></li>
        <li><a href="#about">ITEM2</a></li>
        <li><a href="#contact">ITEM3</a></li>
      </ul>
    </div>
  </header>
  <section>
  </section>  
  <footer></footer>
</div>

CSS: * {box-sizing: border-box;} body {color: # 222;набивка: 1em 2em;фон: #eee;шрифт: 13px / 1.4 'open sans', без засечек;} h1, h2 {margin: 0 0 .5em;высота строки: 1,2;семейство шрифтов: «открытые без сгущения», без засечек;} h1 {color: # f90;текст-преобразования: заглавные буквы;} p {margin: 1em 0;} a {color: # 06c;-вебкит-переход: .2s линейный;переход: .2s линейный;} a: hover {color: # 07c;} нижний колонтитул {цвет: # 888;ясно: то и другое;Размер шрифта: 12px;поле: 2em 0 0;выравнивания текста: центр;} нижний колонтитул a {color: # 444;} #wrap {margin: 1em auto;обивка: 1.5em;фон: #fff;тень от рамки: 0 5px 5px 0 rgba (0,0,0, .2);}

#nav { background:#333; }
  #nav ul { padding:0; overflow:hidden; list-style:none; }
  #nav li { float:left; }
  #nav a { color:#fff; display:block; padding:.5em 2em; }
    #nav a:hover { background:#666; }
    #nav a.active { color:#222; background:#f90; }
      #nav a.active:hover {}
      #nav.over a.active { color:#fff; background:none; }
        #nav.over a.active:hover { background:#666; }

JavaScript:

let timeToActivate = (new Date("June 23, 2019 14:00:00")).getTime();
let timeToDeActivate = (new Date("June 24, 2019 16:00:00")).getTime();
let currTime = Date.now();
var NewClass = document.querySelector("#nav a");

if(currTime > timeToActivate && currTime < timeToDeActivate){
    // Write Code To Activate Button
    NewClass.setAttribute("class","active");
}else if(currTime < timeToActivate){
NewClass.setAttribute("class","active");


    setTimeout(() => {

         // write code to activate button

         // To Deactivate button on 4pm
         setTimeout(() => {

              // write code to deactivate button

         }, timeToDeActivate - Date.now())

    }, timeToActivate - currDate);
}

ОБНОВЛЕНИЕ 2: Решение с использованием jquery Вот рабочее решение.Я только что обновил пост на тот случай, если у кого-то есть такая же цель:

<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/jquery@3.4.1/dist/jquery.min.js"></script>
<script>   
 btna = [
    {
      "id":"#btn123",
      "formId" : "#wpcf7-f4849-p4850-o1",
      'openTime' : "June 23, 2019 14:00:00",
      'closeTime' : "June 23, 2019 14:00:00",
    },
    {
      "id":"#btn1234",
      "formId" : "#wpcf7-f4940-p4850-o2",
      'openTime' : "June 23, 2019 14:00:00",
      'closeTime' : "June 25, 2019 14:00:00",
    },
    {
      "id":"#btn12345",
      "formId" : "#wpcf7-f4941-p4850-o3",
      'openTime' : "June 23, 2019 14:00:00",
      'closeTime' : "June 28, 2019 14:00:00",
    }
  ]
  $(document).ready(function(){
    let openTime
    let closeTime
    let button
    let itemForm
    let now = Date.now();
    btna.map(function(item){
      openTime = (new Date(item.openTime)).getTime()
            closeTime = (new Date(item.closeTime)).getTime()
      button = $( item.id )
      itemForm = $( item.formId )
      if (closeTime > now && openTime < now ) {
        // Button in correct time period
        button.addClass("active")
        // if you don't want to auto hide form in page startup just comment out this line 
        itemForm.hide()
        button.click(function(){
           $( item.formId ).toggle(250)
        })
      }else{
        // Button is'nt in its time period
        button.addClass("ex1")
        itemForm.hide()
      }
    })
  })</script>

1 Ответ

1 голос
/ 23 июня 2019

делает кнопки по умолчанию отключенными,

let timeToActivate = (new Date("June 23, 2019 14:00:00")).getTime();
let timeToDeActivate = (new Date("June 23, 2019 16:00:00")).getTime();
let currTime = Date.now();

if(currTime > timeToActivate && currTime < timeToDeActivate){
    // Write Code To Activate Button
}else if(currTime < timeToActivate){

    // To Activate on 2pm
    setTimeout(() => {

         // write code to activate button

         // To Deactivate button on 4pm
         setTimeout(() => {

              // write code to deactivate button

         }, timeToDeActivate - Date.now())

    }, timeToActivate - currTime);
}

Согласно вашему обновленному вопросу, я создал скрипку, проверьте, работает ли она

https://jsfiddle.net/Abhay_Sehgal20/cy2jqmpu/5/

...