@@ -6,12 +6,15 @@ let romajiButton = document.getElementById("romaji");
66const blockquote = document . getElementById ( 'letter' ) ;
77const answer = document . getElementById ( 'answer' ) ;
88let main = document . getElementById ( 'main' ) ;
9+ const instructionText = document . querySelector ( '.main p' ) ;
910
1011let ind = Math . floor ( Math . random ( ) * kanaList . length ) ;
1112
1213document . addEventListener ( "DOMContentLoaded" , ( ) => {
1314 const savedMode = localStorage . getItem ( 'kanaMode' ) ;
1415
16+ instructionText . textContent = "Click to reveal" ;
17+
1518 if ( savedMode === 'katakana' ) {
1619 katakanaButton . click ( ) ;
1720 } else if ( savedMode === 'romaji' ) {
@@ -28,6 +31,7 @@ hiraganaButton.addEventListener("click", () => {
2831 answer . classList . remove ( 'shown' ) ;
2932 hiraganaButton . classList . toggle ( 'clicked' ) ;
3033 blockquote . textContent = kanaList [ ind ] [ 0 ] ;
34+ instructionText . textContent = "Click to reveal" ;
3135 }
3236 katakanaButton . classList . remove ( 'clicked' ) ;
3337 romajiButton . classList . remove ( 'clicked' ) ;
@@ -40,6 +44,7 @@ katakanaButton.addEventListener("click", () => {
4044 answer . classList . remove ( 'shown' ) ;
4145 katakanaButton . classList . toggle ( 'clicked' ) ;
4246 blockquote . textContent = kanaList [ ind ] [ 1 ] ;
47+ instructionText . textContent = "Click to reveal" ;
4348 }
4449 hiraganaButton . classList . remove ( 'clicked' ) ;
4550 romajiButton . classList . remove ( 'clicked' ) ;
@@ -52,6 +57,7 @@ romajiButton.addEventListener("click", () => {
5257 answer . classList . remove ( 'shown' ) ;
5358 romajiButton . classList . toggle ( 'clicked' ) ;
5459 blockquote . textContent = kanaList [ ind ] [ 2 ] ;
60+ instructionText . textContent = "Click to reveal" ;
5561 }
5662 hiraganaButton . classList . remove ( 'clicked' ) ;
5763 katakanaButton . classList . remove ( 'clicked' ) ;
@@ -60,23 +66,42 @@ romajiButton.addEventListener("click", () => {
6066main . addEventListener ( "click" , ( ) => {
6167 if ( ! answer . classList . contains ( 'shown' ) ) {
6268 answer . classList . add ( 'shown' ) ;
69+ instructionText . textContent = "Click for next" ;
6370 }
6471 else {
65- answer . classList . remove ( 'shown' ) ;
66- ind = Math . floor ( Math . random ( ) * kanaList . length ) ;
67-
68- if ( hiraganaButton . classList . contains ( 'clicked' ) ) {
69- blockquote . textContent = kanaList [ ind ] [ 0 ] ;
70- answer . textContent = kanaList [ ind ] [ 2 ] ;
71- }
72- else if ( katakanaButton . classList . contains ( 'clicked' ) ) {
73- blockquote . textContent = kanaList [ ind ] [ 1 ] ;
74- answer . textContent = kanaList [ ind ] [ 2 ] ;
75- }
76- else {
77- blockquote . textContent = kanaList [ ind ] [ 2 ] ;
78- answer . textContent = kanaList [ ind ] [ 0 ] + " " + kanaList [ ind ] [ 1 ] ;
79- }
72+ blockquote . classList . add ( 'fade-out' ) ;
73+ answer . classList . add ( 'fade-out' ) ;
74+ instructionText . classList . add ( 'fade-out' ) ;
75+
76+ setTimeout ( ( ) => {
77+ ind = Math . floor ( Math . random ( ) * kanaList . length ) ;
78+
79+ answer . style . transition = 'none' ;
80+ answer . classList . remove ( 'shown' ) ;
81+
82+ instructionText . textContent = "Click to reveal" ;
83+
84+ if ( hiraganaButton . classList . contains ( 'clicked' ) ) {
85+ blockquote . textContent = kanaList [ ind ] [ 0 ] ;
86+ answer . textContent = kanaList [ ind ] [ 2 ] ;
87+ }
88+ else if ( katakanaButton . classList . contains ( 'clicked' ) ) {
89+ blockquote . textContent = kanaList [ ind ] [ 1 ] ;
90+ answer . textContent = kanaList [ ind ] [ 2 ] ;
91+ }
92+ else {
93+ blockquote . textContent = kanaList [ ind ] [ 2 ] ;
94+ answer . textContent = kanaList [ ind ] [ 0 ] + " " + kanaList [ ind ] [ 1 ] ;
95+ }
96+
97+ void answer . offsetWidth ;
98+
99+ answer . style . transition = '' ;
100+
101+ blockquote . classList . remove ( 'fade-out' ) ;
102+ answer . classList . remove ( 'fade-out' ) ;
103+ instructionText . classList . remove ( 'fade-out' ) ;
104+ } , 100 ) ;
80105 }
81106} )
82107
0 commit comments