[JavaScript] Licznik czasu, Licznik czasu |
[JavaScript] Licznik czasu, Licznik czasu |
4.07.2014, 11:11:30
Post
#1
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 0 Dołączył: 11.06.2014 Ostrzeżenie: (0%) |
Potrzebuje wykonać licznik, ktory bedzie miał za zadanie mierzenie aktywności uzytkowników (ruch myszy, przyciskanie klawiszy itp) ta aktywnośc ma zliczac przez nastepne 3 sec od wykonanej akcji.
Wygladać to powinno chyba mniej wiecej tak, ale niestety nie działa mi skrypt :/ Kod function setStopTime { var stopTime = (new Date()).getTime() + 3000; } function setValue(value) { millis = value % 1000; value = Math.floor( value / 1000); sec = value % 60; value = Math.floor( value / 60 ); if(value<10) { value="0" + value; } if(sec<10) { sec="0"+sec; } if(millis<100) { millis="00"+millis; } document.getElementById('zegar').innerHTML = value + ":" + sec +"." + millis; } function go2() { var millis = 0; var sec = 0; var temp = 0; var totalTime =0; var currentTime = (new Date()).getTime(); var startTime = currentTime; var counter = setInterval(function() { if(currentTime>=stopTime) { clearInterval(counter); totalTime += stopTime - startTime; setValue(totalTime); return; } temp = currentTime - startTime; setValue(temp); currentTime = (new Date()).getTime(); }, 1); } document.addEventListener('keydown', function() {setStopTime();go2();}); |
|
|
4.07.2014, 14:33:23
Post
#2
|
|
Grupa: Zarejestrowani Postów: 578 Pomógł: 69 Dołączył: 15.04.2007 Skąd: Wrocław Ostrzeżenie: (0%) |
"var" oznacza deklarację zmiennej.
Jeśli deklarujesz zmienną w obszarze funkcji to tylko tam ma ona zasięg. Dokładniej zmienna stopTime istnieje tylko wewnątrz funkcji setStopTime. Musisz ją zadeklarować przed funkcją a w funkcji tylko nadać jeje wartość. |
|
|
7.07.2014, 12:29:10
Post
#3
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 0 Dołączył: 11.06.2014 Ostrzeżenie: (0%) |
Dzieki. Kolejna rzecz jaka chce zrobic jest zrobienie tego jako obiekt, po to by uzyc 4 zegarow ich uruchamianie bedzie tak samo dzialac, ale warunkiem ma byc aktywny div w ktorym sie znajduje zegar.
Strona jest podzielona na 4 rowne kontenery, a w nich umieszczone zegary, gdy klikne na dany div robi mu sie ramka i jak porusze myszka czy klikne klawisz to sie uruchamia licznik w tym tylko divie. poki co mam taki kod, ktory działa, eventy zrobiłem na 2 rozne zdarzenia i uruchamiaja inne zegary, by sprawdzic czy dzialaja osobno Plik Js Kod function obiekt(id_z) { var millis = 0; var sec = 0; var stopTime=0; var totalTime =0; var temp = 0; var startTime=0; var work = false; this.go2= function() { if (work == true ) return; work = true; document.getElementById(id_z).style.color="red"; var currentTime = (new Date()).getTime(); startTime = currentTime; var counter = setInterval(function() { if(currentTime >= stopTime) { document.getElementById(id_z).style.color="black"; clearInterval(counter); totalTime+= stopTime - startTime; work = false; setValue(totalTime); return; } temp = currentTime - startTime; setValue(temp+totalTime); currentTime = (new Date()).getTime(); }, 1); } function setValue(value) { millis = value % 1000; value = Math.floor( value / 1000); sec = value % 60; value = Math.floor( value / 60 ); if(value<10) { value="0" + value; } if(sec<10) { sec="0"+sec; } if(millis<100) { millis="0"+millis; } document.getElementById(id_z).innerHTML = value + ":" + sec +":" + millis; } this.setStopTime= function() { stopTime = (new Date()).getTime() + 3000; } } var obiekt1=new obiekt("zegar1"); var obiekt2=new obiekt("zegar2"); var obiekt3=new obiekt("zegar3"); var obiekt4=new obiekt("zegar4"); document.addEventListener("keydown", function() {obiekt2.setStopTime();obiekt2.go2();}); document.addEventListener("mousemove", function() {obiekt1.setStopTime();obiekt1.go2();}); Plik html Kod <!DOCTYPE html> <html> <head> <link rel="stylesheet" href="style.css" /> <script src="skrypt2.js"></script> <title>Projekty</title> </head> <body onload="start()" > <div id="one"> <div class ="zegar" id="zegar1">00:00:000</div> </div> <div id="two"> <div class ="zegar" id="zegar2">00:00:000</div> </div> <div id="three"> <div class ="zegar" id="zegar3">00:00:000</div> </div> <div id="four"> <div class ="zegar" id="zegar4">00:00:000</div> </div> </body> </html> Jakies propozycje jak to zrobic? |
|
|
7.07.2014, 12:50:51
Post
#4
|
|
Grupa: Zarejestrowani Postów: 675 Pomógł: 58 Dołączył: 17.12.2013 Ostrzeżenie: (10%) |
Może to przerzućmy do jednego wątku?
|
|
|
Wersja Lo-Fi | Aktualny czas: 25.05.2024 - 08:54 |