Обратный отчет таймер 
		
		
		
		Всем привет. Подскажите в чем проблема, где ошибки. Код не хочет работать. 
	
<div class="container">
	<h2>Home Work 2</h2>
	<div class="box hide"></div>
	<div id="showtime">00:00</div>
    <button id="start" class="btn btn-primary">START</button>
    <br>
    <br>
    <form name="form">
    <div>
           Day: <input id='day_id'>
    </div>
    <div>
           hours: <input id='hour_id'>
    </div>
    <div>
           minutes: <input id='minute_id'>
    </div>
   
</form>
</div>
function  timer(){
        let day= getElementById('day_id').value;
        let hour=getElementById('hour_id').value;
        let  minute=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(diff <= 0) {
          st  = window.open("http://google.com");
       } else {
        st=`${days} days, ${hours} hours,${minutes}minutes,${seconds}seconds`;
      }
document.getElementById('start').addEventListener('click', timer);
      document.getElementById("showtime").innerHTML = st;
      setTimeout(timer, 1000);
  }
  timer();
 | 
	
		
 метод getElementById вызывайте у document 
	document.getElementById() если вызывать его как вы, интерпретатор будет пытаться его найти в window, а там такого метода нет  | 
	
		
 Цитата: 
	
  | 
	
		
 FotGOD, 
	так вы сразу функцию вызываете, вот он и тикает сразу 
<div class="container">
		<h2>Home Work 2</h2>
		<div class="box hide"></div>
		<div id="showtime">00:00</div>
		<button id="start" class="btn btn-primary">START</button>
		<br>
		<br>
		<form name="form">
			<div>
				Day: <input id='day_id'>
			</div>
			<div>
				hours: <input id='hour_id'>
			</div>
			<div>
				minutes: <input id='minute_id'>
			</div>
		</form>
	</div>
	<script>
		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(diff <= 0) {
				st  = window.open("http://google.com");
			} else {
				st=`${days} days, ${hours} hours,${minutes}minutes,${seconds}seconds`;
			}
			document.getElementById('start').addEventListener('click', timer);
			document.getElementById("showtime").innerHTML = st;
			setTimeout(timer, 1000);
		}
		timer();
	</script>
 | 
	
		
 Цитата: 
	
 
document.getElementById('start').addEventListener('click', timer);
 это из функции и заработала кнопка. А почему не уменьшаются минуты, когда секунда доходит до нуля? | 
	
		
 
<input type="number" id="day">Дней<br>
	<input type="number" id="hour">Часов<br>
	<input type="number" id="min">Минут<br>
	<button id="st">start</button>
	<div id="time"></div>
	<script>
		var end;
		function timer(){
			var now = new Date(),
			ost = new Date(end - now),
			s = Math.floor(ost/1000),
			m = Math.floor(s/60),
			h = Math.floor(m/60),
			d = Math.floor(h/24);
			s = s%60+'';
			m = m%60+'';
			h = h%24+'';
			d = d+'';
			if(ost>0){
				setTimeout(timer, 1000);
				time.textContent = `${d}-дней ${h}-часов ${m}-минут ${s}-секунд`;
			}
			else window.open("http://google.com");
		}
		st.onclick = e =>{
			end = Date.now() + ( day.value*86400000 ) + ( hour.value*3600000) + ( min.value* 60000);
			timer();
		};
	</script>
 | 
	
		
 Цитата: 
	
 If(seconds==0){minutes--; } и так для всех переменных, но не сработало. Не подскажите почему?  | 
	
		
 Цитата: 
	
  | 
	
		
 Цитата: 
	
  | 
	
		
 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();
 | 
	
		
 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. Чтото не так делаю  | 
	
		
 Попробовал сделать так, но тогда без кнопки старт все идет, и не вписываются минуты: 
	где 
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, время: 05:57. |