@proclub

Почему не всегда работает скрипт?

Есть таблица песочница

В какие-то временные промежутки заданные в ней она работает как надо, а порой не реагирует на значения, которые заданы

// определяем коллекции
let timeCell = document.getElementsByClassName('time'),
    healthCell = document.getElementsByClassName('health'),
    statusCell = document.getElementsByClassName('status'),
    takeCell = document.getElementsByClassName('take'),
    timerId;
//для того чтобы получить время с набора, образуем числовой массив, убрав все кроме чисел и приведя каждый элемент массива к Number
//console.log( takeCell[2].innerText.match(/\d{2}/g),takeCell[2].innerText.match(/\d{2}/g).map(e=>parseInt(e)),(takeCell[2].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[2] )
(function t() {
  [].slice.call(timeCell).map((e,i)=>{
    if(healthCell[i].innerText!=='болен') {
      //дефолтное состояние
      e.innerText=(new Date()).getHours()+':'+('0'+(new Date()).getMinutes()).slice(-2) + ':' + ('0'+(new Date()).getSeconds()).slice(-2);
      healthCell[i].innerText='Работает'; statusCell[i].innerText='Ожидание'; statusCell[i].style.backgroundColor="yellow";
      // проверки на готовность(их будет много)
      //фактически на них весь код и построен
      if((takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[0] && (takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[1] && (((takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[1]<30 && (new Date()).getHours()==(takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[0] && (new Date()).getMinutes()>=(takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[1] && (new Date()).getMinutes()<=59) || ((takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[1]>=30 && (new Date()).getHours()==(takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[0]+1 && (new Date()).getMinutes()>=0 && (new Date()).getMinutes()<(takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[1]-30)) || (takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[2] && (takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[3] && (((takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[3]<30 && (new Date()).getHours()==(takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[2] && (new Date()).getMinutes()>=(takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[3] && (new Date()).getMinutes()<=59) || ((takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[3]>=30 && (new Date()).getHours()==(takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[2]+1 && (new Date()).getMinutes()>=0 && (new Date()).getMinutes()<(takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[3]-30)) || (takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[4] && (takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[5] && (((takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[5]<30 && (new Date()).getHours()==(takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[4] && (new Date()).getMinutes()>=(takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[5] && (new Date()).getMinutes()<=59) || ((takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[5]>=30 && (new Date()).getHours()==(takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[4]+1 && (new Date()).getMinutes()>=0 && (new Date()).getMinutes()<(takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[5]-30)) || (takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[6] && (takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[7] && (((takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[7]<30 && (new Date()).getHours()==(takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[6] && (new Date()).getMinutes()>=(takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[7] && (new Date()).getMinutes()<=59) || ((takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[7]>=30 && (new Date()).getHours()==(takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[6]+1 && (new Date()).getMinutes()>=0 && (new Date()).getMinutes()<(takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[7]-30)) || (takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[8] && (takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[9] && (((takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[9]<30 && (new Date()).getHours()==(takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[8] && (new Date()).getMinutes()>=(takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[9] && (new Date()).getMinutes()<=59) || ((takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[9]>=30 && (new Date()).getHours()==(takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[8]+1 && (new Date()).getMinutes()>=0 && (new Date()).getMinutes()<(takeCell[i].innerText.match(/\d{2}/g).map(e=>parseInt(e)))[9]-30)))
      {
        statusCell[i].innerText='Открыто'; statusCell[i].style.backgroundColor="green";
      }      
    } else timeCell[i].innerText=statusCell[i].innerText=takeCell[i].innerText="---";
  });
  timerId=setTimeout(t,1000);
})();
window.onbeforeunload=()=>{clearTimeout(timerId)}
  • Вопрос задан
  • 78 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 22:26
3500 руб./за проект
22 нояб. 2024, в 21:47
3000 руб./за проект
22 нояб. 2024, в 21:44
50000 руб./за проект