[JS] zegarek z tysięcznymi sekundy

Odpowiedz Nowy wątek
2006-09-28 18:43
0

Oto napisany przeze mnie zegarek z tysięcznymi sekundy i mrygającymi dwukropkami :-)
Zegar i data pojawiają się w pasku statusu po najechaniu na nie myszką.

plik "zegar.js":

var dataStr, czasStr, sekunda, dzien;

function zegar()
{
    data = new Date();
    if(sekunda!=data.getSeconds())
    {
        setna = 0;
        sekunda = data.getSeconds();
        minuta = data.getMinutes();
        godzina = data.getHours();
        if(minuta<10) minuta = "0" + minuta;
        if(sekunda<10) sekunda = "0"+sekunda;
        if(dzien!=data.getDate())
        {
            dzien = data.getDate();
            miesiac = data.getMonth();
            switch(miesiac)
            {
                case 0 : miesiac = "Stycznia";
                    break;
                case 1 : miesiac = "Lutego";
                    break;
                case 2 : miesiac = "Marca";
                    break;
                case 3 : miesiac = "Kwietnia";
                    break;
                case 4 : miesiac = "Maja";
                    break;
                case 5 : miesiac = "Czerwca";
                    break;
                case 6 : miesiac = "Lipica";
                    break;
                case 7 : miesiac = "Sierpnia";
                    break;
                case 8 : miesiac = "Wrzesnia";
                    break;
                case 9 : miesiac = "Pazdziernika";
                    break;
                case 10 : miesiac = "Listopada";
                    break;
                case 11 : miesiac = "Grudnia";
            }
            rok = 1900 + data.getYear();
            dataStr = dzien+" "+miesiac+" "+rok;
            document.zegar.data.value = dataStr;
        }
    }
    milli = data.getMilliseconds();;
    znak = (milli<500)?":":" ";
    milliStr = (milli<100)?((milli<10)?"00"+milli:"0"+milli):milli;
    czasStr = godzina+znak+minuta+znak+sekunda+znak+milliStr;
    document.zegar.czas.value = czasStr;
    Timer = setTimeout("zegar()", 1);
}

var stop = 1;

function czytaj_zegar()
{
    (stop==1)?setTimeout('window.status=defaultStatus',15):setTimeout('czytaj_zegar(1)',10);
    window.status = "Aktualna godzina: "+document.zegar.czas.value;
}

defaultStatus = document.title;

natomiast na stronie musi być kod:

<html>
 <head>
  <script language='JavaScript' src='zegar.js' type='text/javascript'></script>
 </head>
 <body onLoad='zegar()'>
  [...]
  <table cellpadding='0' cellspacing='0' border='0'>
   <tr>
    <td align='right' onMouseOut="window.status=defaultStatus" onMouseOver="window.status='Dzisiejsza data: '+document.zegar.data.value;return true;"> 
     Dzisiejsza data:<br/>
    </td>
    <td width='5' onMouseOut="window.status=defaultStatus" onMouseOver="window.status='Dzisiejsza data: '+document.zegar.data.value;return true;">
    </td>
    <td onMouseOut="window.status=defaultStatus" onMouseOver="window.status='Dzisiejsza data: '+document.zegar.data.value;return true;">
     <form name='zegar'><input type='text' name='data' value=''/><br/>
    </td>
   </tr>
   <tr>
    <td align='right' onMouseOut="stop=1" onMouseOver="stop=0;czytaj_zegar();return true;">
     Godzina:<br/>
    </td>
    <td onMouseOut="stop=1;" onMouseOver="stop=0;czytaj_zegar();return true;">
    </td>
    <td onMouseOut="stop=1;" onMouseOver="stop=0;czytaj_zegar();return true;">
     <input type='text' name='czas' value=''/></form><br/>
    </td>
   </tr>
  </table>
  [...]
 </body>
</html>

Funkcja czytaj_zegar() jest niedoskonała: czasami jak zjeżdżasz myszką z zegarka, nadal się <ort>odświerza</ort> w pasku statusu. Trzeba wtedy najechać jeszcze raz i <ort>spowrotem</ort> zjechać. Niewiem za bardzo, dlaczego tak się dzieje?

Może ktoś wie?


It's not just about livin' forever Johny.
The trick is livin' with yourself forever.

Pozostało 580 znaków

2006-10-26 11:04
0

U mnie zegra jest w pasku statusu jak się najedzie na ten zegar lub kursor jest blisko pola, w którym wyświetlany jest zegar.
Może po prostu źle okreśłiłeś w jakim obsarze ma reagować pasek statusu - nawet jak się najedzie na napis "Godzina" to zegar jest w pasku statusu.

Pozostało 580 znaków

2006-10-26 17:09
0

O, już zapomkniałem o tym poście

 - nawet jak się najedzie na napis "Godzina" to zegar jest w pasku statusu.

Tak właśnie miało być i problem zniknął jak przestawiłem setTimeout na 50 w funkcji czytaj_zegar
Niewiem za bardzo dlaczego tak się stało, ale chętnie się dowiem
Podejrzewam, że to miało związek z szybkością mojego komputera albo ilością pamięci :-D


It's not just about livin' forever Johny.
The trick is livin' with yourself forever.

Pozostało 580 znaków

2006-10-26 20:11
0

Najważniejsze działa ;], szkoda, że tylko w IE (używam Firefoxa i w nim nie działa)

pozdrawiam

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0