[js]odliczanie czasu problem ze skryptem

       

Podstrony


telcocafe

mam skrypcik do odliczania czasu znaleziony na pewnej www skrypt dziala ale tylko pod Oper±, na IE wyswietlaja sie wszedzie zera a pod FF nic sienie pokazuje w polach input ponizej zamieszczam kod skryptu:

sekcja head
<script language="javascript" type="text/javascript"> ty=106; to=07; td=13; th=9; tm=59; ts=59; function e(){ ny=0; no=0; nd=0; nh=0; nm=0; ns=0; n = new Date(); if( n.getYear() > ty ){ t.s.value=0; t.m.value=0; t.h.value=0; t.d.value=0; t.o.value=0; t.y.value=0; } else{ ns = ns + ts-n.getSeconds(); if( ns < 0 ){ ns = 60 + ns; nm=-1; } t.s.value = ns; nm = nm + tm-n.getMinutes(); if( nm < 0 ){ nm = 60 + nm; nh = -1; } t.m.value = nm; nh = nh + th-n.getHours(); if( nh < 0 ){ nh = 24 + nh; nd = -1; } t.h.value=nh; nd = nd + td-n.getDate(); if( nd < 0 ){ x=n.getMonth(); if(x==0||x==2||x==4||x==6||x==7||x==9||x==11){ nd = 31 + nd; } if( x==3||x==5||x==8||x==10 ){ nd = 30 + nd; } if( x==1 ){ if( n.getYear()/4-Math.floor(n.getYear()/4)==0){ nd = 29 + nd; }else{ nd = 28 + nd; } } } no = -1; t.d.value = nd; no = no + to-n.getMonth(); if( no < 0 ){ no = 11 + no; ny = -1; } t.o.value = no; ny = ny + ty-n.getYear(); if( ny < 0 ){ t.y.value = 0; }else{ t.y.value = ny; setTimeout("e()", 1000); } } } </script> </body>

sekcja body
<body onload="e();"> <form name="t"> Zapraszamy za: <input type="text" class="s" name="y" /> lat <input type="text" class="s" name="o" /> miesiecy <input type="text" class="s" name="d" /> dni <input type="text" class="s" name="h" /> godziny <input type="text" class="s" name="m" /> minuty <input type="text" class="s" name="s" /> sekundy </form>
Wie może kto¶ co jest nei tak? Ja za js raczej eni przepadam
Użytkownik boryssek edytował ten post 10 lipiec 2006, 22:17


Co¶ w ogóle jest nie tak z tym skryptem.

W sekcji HEAD spróbuj:
<script language="javascript" type="text/javascript"> ty=106; to=07; td=13; th=9; tm=59; ts=59; function d(x) { return document.getElementById(x) } function e(){ ny=0; no=0; nd=0; nh=0; nm=0; ns=0; n = new Date(); if( n.getYear() > ty ){ d('s').value=0; d('m').value=0; d('h').value=0; d('d').value=0; d('o').value=0; d('y').value=0; } else{ ns = ns + ts-n.getSeconds(); if( ns < 0 ){ ns = 60 + ns; nm=-1; } d('s').value = ns; nm = nm + tm-n.getMinutes(); if( nm < 0 ){ nm = 60 + nm; nh = -1; } d('m').value = nm; nh = nh + th-n.getHours(); if( nh < 0 ){ nh = 24 + nh; nd = -1; } d('h').value=nh; nd = nd + td-n.getDate(); if( nd < 0 ){ x=n.getMonth(); if(x==0||x==2||x==4||x==6||x==7||x==9||x==11){ nd = 31 + nd; } if( x==3||x==5||x==8||x==10 ){ nd = 30 + nd; } if( x==1 ){ if( n.getYear()/4-Math.floor(n.getYear()/4)==0){ nd = 29 + nd; }else{ nd = 28 + nd; } } } no = -1; d('d').value = nd; no = no + to-n.getMonth(); if( no < 0 ){ no = 11 + no; ny = -1; } d('o').value = no; ny = ny + ty-n.getYear(); if( ny < 0 ){ d('y').value = 0; }else{ d('y').value = ny; } } } setInterval("e()", 1000); </script>
Spróbuj tak. Problem mog± też powodować takie same nazwy.

Lepiej użyć setInterval() od setTimeout() (tak, jak w powyższym kodzie) i usun±ć onload="e()" z body.
Użytkownik Ferrari edytował ten post 11 lipiec 2006, 08:00
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.