[JS] zegarek z tysięcznymi sekundy

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>z powrotem</ort> zjechać. Niewiem za bardzo, dlaczego tak się dzieje?

Może ktoś wie?

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.

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

0

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

pozdrawiam

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