@@ -3,72 +3,54 @@ const baslatButonu = document.getElementById("start");
3
3
const durdurButonu = document . getElementById ( "stop" ) ;
4
4
const sifirlaButonu = document . getElementById ( "reset" ) ;
5
5
6
- // Kronometre değişkenleri
7
- let baslangicZamani ;
6
+ let baslangicZamani = 0 ;
8
7
let gecenZaman = 0 ;
9
- let calisiyor = false ;
10
- let animationFrameId ;
8
+ let kronometre ;
11
9
12
- // Kronometreyi başlat
13
10
function kronometreyiBaslat ( ) {
14
- if ( ! calisiyor ) {
15
- calisiyor = true ;
16
- baslangicZamani = Date . now ( ) - gecenZaman ;
17
- kronometreCalistir ( ) ;
18
- baslatButonu . disabled = true ;
19
- durdurButonu . disabled = false ;
20
- }
11
+ baslatButonu . disabled = true ;
12
+ durdurButonu . disabled = false ;
13
+
14
+ const baslangicZamani = Date . now ( ) - gecenZaman ; // kronometre 1 sn once basladi ve bitti demek
15
+
16
+ kronometre = setInterval ( ( ) => {
17
+
18
+ gecenZaman = Date . now ( ) - baslangicZamani ; //date now suan sayama basla demek baslangic zamani hep zaten 0 demek
19
+ zamaniGuncelle ( ) ;
20
+ } , 10 ) ; // Her 10 milisaniyede bir fonksiyonu calistirir ve calisan degerleri gecenzaman degiskenine atar degerler surekli degisir
21
+ //setintervalin aldigi deger gecen zamanin icinde birikir. biriken deger zamaniguncelle fonksiyonunda kullanilir
21
22
}
22
23
23
- // Kronometreyi durdur
24
24
function kronometreyiDurdur ( ) {
25
- if ( calisiyor ) {
26
- calisiyor = false ;
27
- cancelAnimationFrame ( animationFrameId ) ;
28
- baslatButonu . disabled = false ;
29
- durdurButonu . disabled = true ;
30
- }
25
+ clearInterval ( kronometre ) ;
26
+ baslatButonu . disabled = false ;
27
+ durdurButonu . disabled = true ;
31
28
}
32
29
33
- // Kronometreyi sıfırla
34
30
function kronometreyiSifirla ( ) {
35
- calisiyor = false ;
36
- cancelAnimationFrame ( animationFrameId ) ;
31
+ clearInterval ( kronometre ) ;
37
32
gecenZaman = 0 ;
38
33
zamaniGuncelle ( ) ;
39
34
baslatButonu . disabled = false ;
40
35
durdurButonu . disabled = true ;
41
36
}
42
37
43
- // Kronometreyi çalıştır
44
- function kronometreCalistir ( ) {
45
- if ( calisiyor ) {
46
- gecenZaman = Date . now ( ) - baslangicZamani ;
47
- zamaniGuncelle ( ) ;
48
- animationFrameId = requestAnimationFrame ( kronometreCalistir ) ;
49
- }
50
- }
51
-
52
- // Gösterilen zamanı güncelle
53
38
function zamaniGuncelle ( ) {
54
39
const toplamMilisaniye = gecenZaman ;
55
- const dakikalar = Math . floor ( toplamMilisaniye / ( 1000 * 60 ) ) ;
56
- const saniyeler = Math . floor ( ( toplamMilisaniye % ( 1000 * 60 ) ) / 1000 ) ;
40
+ const dakikalar = Math . floor ( toplamMilisaniye / ( 1000 * 60 ) ) ; //60bin milisaniye 1dk oldugu icin boluyoruz
41
+ const saniyeler = Math . floor ( ( toplamMilisaniye % ( 1000 * 60 ) ) / 1000 ) ;
57
42
const milisaniyeler = Math . floor ( ( toplamMilisaniye % 1000 ) / 10 ) ;
58
43
59
44
zamanGostergeElementi . innerHTML = `
60
- <h1 class="text">Hogwarts <span>Saati</span> 🐦🔥</h1>
61
- <span>${ String ( dakikalar ) . padStart ( 2 , "0" ) } :</span>${ String (
62
- saniyeler
63
- ) . padStart ( 2 , "0" ) } :${ String ( milisaniyeler ) . padStart ( 2 , "0" ) }
64
- ` ;
45
+ <h1 class="text">Hogwarts <span>Saati</span> 🐦🔥</h1>
46
+ <span>${ String ( dakikalar ) . padStart ( 2 , "0" ) } :</span>${ String ( saniyeler ) . padStart ( 2 , "0" ) } :${ String ( milisaniyeler ) . padStart ( 2 , "0" ) }
47
+ ` ; // padstart sayinin basina 0 koyar ve 2 haneli yapar yalniz sadece stringler ile calisir bu yuzden aldigimiz dakikalar saniyeler mili saniyeler degiskenlerini
48
+ // once sstringe cevirmemiz gerekiyor sonra padsttart metodunu uyguluyoruz.
65
49
}
66
50
67
- // Olay dinleyicileri
68
51
baslatButonu . addEventListener ( "click" , kronometreyiBaslat ) ;
69
52
durdurButonu . addEventListener ( "click" , kronometreyiDurdur ) ;
70
53
sifirlaButonu . addEventListener ( "click" , kronometreyiSifirla ) ;
71
54
72
- // Başlangıç durumu
73
55
zamaniGuncelle ( ) ;
74
- durdurButonu . disabled = true ;
56
+ durdurButonu . disabled = true ;
0 commit comments