Вход

Просмотр полной версии : Обратный таймер


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>

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