@@ -23,3 +23,53 @@ function pauseAlarm() {
2323}
2424
2525window . onload = setup ;
26+
27+ const timeRemainingElement = document . querySelector ( "#timeRemaining" ) ;
28+ const alarmSetElement = document . querySelector ( "#alarmSet" ) ;
29+ const setButtonElement = document . querySelector ( "#set" ) ;
30+ const stopButtonElement = document . querySelector ( "#stop" ) ;
31+ const bodyElement = document . querySelector ( "body" ) ;
32+ const alarmSoundElement = document . querySelector ( "#alarmSound" ) ;
33+
34+ let remainingTime ;
35+ let intervalID ;
36+ function triggerAlarm ( ) {
37+ bodyElement . style . backgroundColor = "yellow" ;
38+ alarmSoundElement . play ( ) ;
39+ }
40+ function setAlarm ( ) {
41+ clearInterval ( intervalID ) ;
42+ const alarmTime = alarmSetElement . value ;
43+ remainingTime = Number ( alarmTime ) ;
44+ const showTimeMinutes = Math . floor ( remainingTime / 60 )
45+ . toString ( )
46+ . padStart ( 2 , "0" ) ;
47+ const showTimeSeconds = ( remainingTime % 60 ) . toString ( ) . padStart ( 2 , "0" ) ;
48+ timeRemainingElement . innerText = showTimeMinutes + ":" + showTimeSeconds ;
49+ if ( remainingTime === 0 ) {
50+ triggerAlarm ( ) ;
51+ } else {
52+ intervalID = setInterval ( countDown , 1000 ) ;
53+ }
54+ }
55+ setButtonElement . addEventListener ( "click" , setAlarm ) ;
56+ function countDown ( ) {
57+ if ( remainingTime <= 0 ) {
58+ clearInterval ( intervalID ) ;
59+ triggerAlarm ( ) ;
60+ return ;
61+ }
62+ remainingTime -= 1 ;
63+ const remainingMinutes = Math . floor ( remainingTime / 60 )
64+ . toString ( )
65+ . padStart ( 2 , "0" ) ;
66+ const remainingSeconds = ( remainingTime % 60 ) . toString ( ) . padStart ( 2 , "0" ) ;
67+ timeRemainingElement . innerText = remainingMinutes + ":" + remainingSeconds ;
68+ }
69+ function stopAlarm ( ) {
70+ clearInterval ( intervalID ) ;
71+ alarmSoundElement . pause ( ) ;
72+ alarmSoundElement . currentTime = 0 ;
73+ bodyElement . style . backgroundColor = "" ;
74+ }
75+ stopButtonElement . addEventListener ( "click" , stopAlarm ) ;
0 commit comments