Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Обратный таймер (https://javascript.ru/forum/events/6242-obratnyjj-tajjmer.html)

peter888 19.11.2009 17:37

Обратный таймер
 
Написал обратный часовой таймер:
<script type="text/javascript">
function timer(){
 var obj_sec=document.getElementById('timer_inp_sec');
	 obj_min=document.getElementById('timer_inp_min'); 
	 
 obj_sec.innerHTML--;
 
 if (obj_sec.innerHTML <= 9) {obj_sec.innerHTML='0'+obj_sec.innerHTML};
 obj_min.innerHTML = obj_min.innerHTML*1 ;
 if (obj_min.innerHTML <= 9) {obj_min.innerHTML='0'+obj_min.innerHTML};
 
 if((obj_min.innerHTML=='00')&&(obj_sec.innerHTML=='00')){ 
		//window.location ='http://google.com.ua';
		document.location.reload();
 		setTimeout(function(){},1000);}	 
 if(obj_sec.innerHTML=='0-1')
 { 	   
 	if(obj_min.innerHTML!='00')
 	{
 		obj_min.innerHTML--;
 		if (obj_min.innerHTML <= 9) {obj_min.innerHTML='0'+obj_min.innerHTML};	 				
 		obj_sec.innerHTML = 59;
		setTimeout(timer,1000);
 	} 
 }
 else{setTimeout(timer,1000);
 } 
if ((obj_sec.innerHTML == '0-1')&&(obj_min.innerHTML == '00')) {obj_sec.innerHTML = '00';obj_min.innerHTML = '00';}
}
setTimeout(timer,1000);
</script>
<b><span id="timer_inp_min">01</span>:<span id="timer_inp_sec">03</span></b>

Проблемма такая: мне надо использовать кучу (например 30) таймеров на одной странице.
<b><span id="timer_inp_min1">01</span>:<span id="timer_inp_sec1">03</span></b>
<b><span id="timer_inp_min2">01</span>:<span id="timer_inp_sec2">03</span></b>
<b><span id="timer_inp_min3">01</span>:<span id="timer_inp_sec3">03</span></b>
<b><span id="timer_inp_min4">01</span>:<span id="timer_inp_sec4">03</span></b>
<b><span id="timer_inp_min5">01</span>:<span id="timer_inp_sec5">03</span></b>
...
<b><span id="timer_inp_minn">01</span>:<span id="timer_inp_secn">03</span></b>

думаю понятно.
Это получаеться, что надо писать к каждому timer_inp_mink и timer_inp_seck заново весь код.
Как этого избежать?

peter888 20.11.2009 10:13

Я думаю надо как-то через функцию сделать, типа так:
function timer(a,b){
 var obj_sec=document.getElementById(a);
     obj_min=document.getElementById(b); 
...

и вызывать только
timer('timer_inp_minn','timer_inp_secn')
но не получаеться :( просто не работает тогда.
Может я не правильно параметры описал... или еще что-то опустил...

peter888 20.11.2009 12:55

Прбывал даже так:
function timer()
{ var obj_min, obj_sec; 
 for(i=1;i<=2;i++){
  	 obj_min=document.getElementById('timer_inp_min'+i);
 	 obj_sec=document.getElementById('timer_inp_sec'+i); 
	 
 obj_sec.innerHTML--;
 
 if (obj_sec.innerHTML <= 9) {obj_sec.innerHTML='0'+obj_sec.innerHTML};
 obj_min.innerHTML = obj_min.innerHTML*1 ;
 if (obj_min.innerHTML <= 9) {obj_min.innerHTML='0'+obj_min.innerHTML};
 
 if((obj_min.innerHTML=='00')&&(obj_sec.innerHTML=='00')){ 
		//window.location ='http://google.com.ua';
		document.location.reload();
 		setTimeout(function(){},1000);}	 
 if(obj_sec.innerHTML=='0-1')
 { 	   
 	if(obj_min.innerHTML!='00')
 	{
 		obj_min.innerHTML--;
 		if (obj_min.innerHTML <= 9) {obj_min.innerHTML='0'+obj_min.innerHTML};	 				
 		obj_sec.innerHTML = 59;
		setTimeout(timer,1000);
 	} 
 }
 else{setTimeout(timer,1000);
 } 
if ((obj_sec.innerHTML == '0-1')&&(obj_min.innerHTML == '00')) {obj_sec.innerHTML = '00';obj_min.innerHTML = '00';}		
}	
}	
setTimeout(timer,1000);
...
<b><span id="timer_inp_min1">01</span>:<span id="timer_inp_sec1">03</span></b> <br>
<b><span id="timer_inp_min2">3</span>:<span id="timer_inp_sec2">34</span></b>

таймера рабортают, но почемуто декримент постоянно уверичивается :(


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