Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   запуск скрипта по счетчику (https://javascript.ru/forum/events/18268-zapusk-skripta-po-schetchiku.html)

dimon76 23.06.2011 22:44

запуск скрипта по счетчику
 
всем привет! я в js не силен. подскажите где у меня ошибка. задача следующая нужно выводить 10 штук обратного отсчета и после достижения нуля выводить типа "время вышло!" вроде все работает но после окончания работы счетчика выводится на секунду сообщение а потом опять нули показывает. вот код :
<script type="text/javascript">
    function countdown_clock(id, year, month, day, hour, minute, format) {
       html_code  = '<div id="countdown' + id + '"></div><br>';
       //html_code += '<div id="countdown' + id + '"></div>';
       document.write(html_code);
       countdown(id, year, month, day, hour, minute, format);                
    
	}
    function countdown(id, year, month, day, hour, minute, format) {
       Today = new Date();
       Todays_Year = Today.getFullYear() - 2000;
       Todays_Month = Today.getMonth();                  
       Todays_Date = (new Date(Todays_Year, Todays_Month, Today.getDate(), 
                               Today.getHours(), Today.getMinutes(), Today.getSeconds())).getTime();                                 
       Target_Date = (new Date(year, month - 1, day, hour, minute, 00)).getTime();                  
       Time_Left = Math.round((Target_Date - Todays_Date) / 1000);
       if(Time_Left < 0)
          Time_Left = 0;
		 
       switch(format) {
         case 0:
              document.all.countdown.innerHTML = Time_Left + ' секунд';
              break;
         case 1:
              days = Math.floor(Time_Left / (60 * 60 * 24));
              Time_Left %= (60 * 60 * 24);
              hours = Math.floor(Time_Left / (60 * 60));
              Time_Left %= (60 * 60);
              minutes = Math.floor(Time_Left / 60);
              Time_Left %= 60;
              seconds = Time_Left;
              dps = ' '; hps = ' '; mps = ' '; sps = ' ';
              if(days == 1) dps ='';
              if(hours == 1) hps ='';
              if(minutes == 1) mps ='';
              if(seconds == 1) sps ='';
              
			  elem = document.getElementById("countdown" + id);
             if(days == 0)  elem.innerHTML = '';
			 if(days > 0) 
			  {elem.innerHTML = days + ' день ' + dps + ' ';}
              elem.innerHTML += hours + ':' + hps + '';
              elem.innerHTML += minutes + ':' + mps ;
              elem.innerHTML += seconds + '' + sps;
              break;
         default: 
              elem.innerHTML = Time_Left + 'секунд';
       }
       setTimeout('countdown(' + id + ',' + year + ',' + month + ',' + day + ',' + hour + ',' + minute + ',' + format + ');', 1000);
    
	}
    </script>
  </head>
  <body>
    <?

$min = 55; // увеличиваем на пол-часа каждый последующий 
$year = 11; // год в формате 00
$month = 06; // месяц
$day = 21;// день
$time = 22; // час старта первого счетчика
for($id=0;$id<49;){ 	
	echo "<script type='text/javascript'>countdown_clock($id, $year, $month, $day, $time, $min, 1)</script>";
  $min = $min+30;
  $id++; 
  
 
  echo "<script type='text/javascript'> if(Time_Left == 0) elem.innerHTML = 'время вышло!'; clearTimeout(); </script>";
  }
	?>

trikadin 23.06.2011 23:47

<div id="timer"></div>
<script>
tim= document.getElementById("timer");

function timer(n) {
 if(n<0) {
  tim.innerHTML="";
  alert("БА-БАХ!"); 
  return;
 };
 tim.innerHTML=n; 
 --n;
 setTimeout(function(){timer(n)}, 1000);
};

timer(10);
</script>


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