1+ var textAreaBorder = document . querySelector ( "#text-area" ) ;
2+ var textArea = document . querySelector ( "#text-area" ) ;
3+ var originalText = document . querySelector ( ".text-section-div p" ) . innerHTML ;
4+ var resetButton = document . querySelector ( "#reset" ) ;
5+ var theTimer = document . querySelector ( ".timer" ) ;
6+
7+ var timer = 0 ;
8+ var minutes = 0 ;
9+ var seconds = 0 ;
10+ var milliSeconds = 0 ;
11+ var currentTime = "" ;
12+ var interval = 0 ;
13+ var timerRunning = false ;
14+
15+ // Add leading zero to numbers 9 or below:
16+ function leadingZero ( time ) {
17+
18+ if ( time <= 9 ) {
19+ return "0" + time ;
20+ }
21+ else {
22+ return time ;
23+ }
24+ }
25+
26+
27+ // Run a standard minute/second/hundredths timer:
28+ //minutes = Math.floor((timer/100)/60);
29+ //seconds = Math.floor((timer/100) - (minutes * 60));
30+ //milliSeconds = Math.floor(timer- (seconds * 100) - (minutes * 6000));
31+ function startTimer ( ) {
32+ minutes = Math . floor ( ( timer / 100 ) / 60 ) ;
33+ seconds = Math . floor ( ( timer / 100 ) - ( minutes * 60 ) ) ;
34+ milliSeconds = Math . floor ( timer - ( seconds * 100 ) - ( minutes * 6000 ) ) ;
35+
36+ minutes = leadingZero ( minutes ) ;
37+ seconds = leadingZero ( seconds ) ;
38+ milliSeconds = leadingZero ( milliSeconds ) ;
39+
40+ currentTime = minutes + ":" + seconds + ":" + milliSeconds ;
41+
42+ theTimer . innerHTML = currentTime ;
43+ timer ++ ;
44+ }
45+
46+
47+
48+ // Match the text entered with the provided text on the page:
49+ function spellCheck ( ) {
50+ var textEntered = textArea . value ;
51+ var partialText = originalText . substring ( 0 , textEntered . length ) ;
52+
53+ if ( textEntered === originalText ) {
54+ textAreaBorder . style . borderColor = 'green' ;
55+ clearInterval ( interval ) ; // stop timer
56+ }
57+ else {
58+ if ( textEntered === partialText ) {
59+ textAreaBorder . style . borderColor = 'lightblue' ;
60+ }
61+ else {
62+ textAreaBorder . style . borderColor = 'red' ;
63+ }
64+ }
65+ }
66+
67+
68+
69+ // Start the timer:
70+ function start ( ) {
71+ var textEnteredLength = textArea . value . length ;
72+ if ( textEnteredLength === 0 && ! timerRunning ) {
73+ //Start The Timer
74+ interval = setInterval ( startTimer , 10 ) ;
75+ timerRunning = true ;
76+ }
77+ }
78+
79+
80+ // Reset everything:
81+ function reset ( ) {
82+ clearInterval ( interval ) ;
83+ timer = 0 ;
84+ minutes = 0 ;
85+ seconds = 0 ;
86+ milliSeconds = 0 ;
87+ currentTime = "" ;
88+ interval = 0 ;
89+ timerRunning = false ;
90+ theTimer . innerHTML = "00:00:00" ;
91+ textArea . value = "" ;
92+ textAreaBorder . style . borderColor = 'gray' ;
93+ }
94+
95+ // Event listeners for keyboard input and the reset button:
96+ textArea . addEventListener ( 'keypress' , start ) ;
97+ textArea . addEventListener ( 'keyup' , spellCheck ) ;
98+ resetButton . addEventListener ( 'click' , reset ) ;
0 commit comments