Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Обратный отчет таймер (https://javascript.ru/forum/css-html/75930-obratnyjj-otchet-tajjmer.html)

FotGOD 18.11.2018 20:11

Цитата:

Сообщение от j0hnik (Сообщение 498891)
FotGOD,
сделайте минимальный макет

чтото типа такого я пробовал:
function timer() {
   let day = document.getElementById('day_id').value;
   let hour = document.getElementById('hour_id').value;
   let minute = document.getElementById('minute_id').value;
   let second = 59;
   const now = new Date(),
     newTime = new Date(now.getFullYear() + 1, 0, 1),
     diff = newTime.getTime() - now.getTime(),
     days = day,
     hours = hour,
     minutes = minute,
     seconds = 59 - now.getSeconds();
 
   let st = '';
   if(seconds==0){
       minutes--;
   }
   if(minutes==0&&seconds==0)
   {
       hours--;
   }
   if (diff <= 0) {
    st  = window.open("http://google.com");

   } else {
     st = `${days} days, ${hours} hours,${minutes}minutes,${seconds}seconds`;
   }
   document.getElementById("showtime").innerHTML = st;
 }
 
 document.getElementById('start').addEventListener('click', () => setInterval(timer, 1000));
 timer();

j0hnik 18.11.2018 20:15

FotGOD,
minutes объявлены константой, константы меняться не должны. замените на var

FotGOD 19.11.2018 09:14

Цитата:

Сообщение от j0hnik (Сообщение 498897)
FotGOD,
minutes объявлены константой, константы меняться не должны. замените на var

Почти:) минута убавилась и вернулась разу на то число какое я ей присвоил в инпуте.
получается к minutes заново присваивается minute.
Если сделать так
hours = 23 - now.getHours()
          , minutes = 59 - now.getMinutes()
          , seconds = 59 - now.getSeconds()

то идет нормально отчет, но с 59 минуте,
а если присваивать через инпат
hours = hour-now.getHours(),
     minutes = minute-now.getMinutes(),
     seconds = 59 - now.getSeconds()

то сразу минуты и часы идут в минус, но не возвращается та цифра, которую присвоил через minute.

Чтото не так делаю

FotGOD 19.11.2018 12:24

Попробовал сделать так, но тогда без кнопки старт все идет, и не вписываются минуты:
где
document.getElementById('start').addEventListener('click', () => setInterval(timer, 1000))
, вообще ничего не решает, его даже не замечает интерпретатор
function timer(){

let day = document.getElementById('day_id').value;
   let hour = document.getElementById('hour_id').value;
   let minute = document.getElementById('minute_id').value;
   let second = 59;

 let st='';
   var IdInt=setInterval(function(){
if(hour<=0&&minute<=0&&second<=0){
    var openurl=window.open("http://google.com");
}
document.getElementById("showtime").innerHTML = st;

if(second>=0){
    st = `${day} days, ${hour} hours,${minute}minutes,${second}seconds`;
}
second=second-1;
if(second==0){
    minute--;
    second=59;
}


   }, document.getElementById('start').addEventListener('click', () => setInterval(timer, 1000))
);


. Это уже просто мысли в слух, на " а вдруг". Но пока не в верном направлении иду...


Часовой пояс GMT +3, время: 09:40.