質問するログイン新規登録

質問編集履歴

4

規約に反する修正

2017/03/02 01:15

投稿

828kk88
828kk88

スコア62

title CHANGED
@@ -1,1 +1,1 @@
1
- JavaScript半角英数の正規表現
1
+ スマホ上JavaScriptがうまく動作しない
body CHANGED
@@ -1,7 +1,190 @@
1
+ 漢字クイズを作っています
2
+ 正しい漢字の読み方をinputタグで作ったフォームに入力すると次の問題が表示されるというものです。
3
+ 正解して次の問題にうつるたびにフォームを空にするため
4
+
1
5
  ```ここに言語を入力
6
+ <div id="content">
7
+ <div id="game">
2
- if (val.match(/[^A-Za-z0-9]+/)) {
8
+ <p id="hurigana"></p>
9
+ <p id="target"></p>
10
+ <p id="start"></p>
11
+ <p id="timer"></p>
12
+ </p>
13
+ <input type="text" id="fkanji" />
14
+ </div>
15
+ <div id="tweet"></div>
16
+ <script src="\.\./ads\.js"></script>
17
+
18
+ </div>
19
+ <script src="\.\./footer\.js"></script>
20
+
21
+
22
+ <script>
23
+ var lev;
24
+ \(function\(\) {
25
+ 'use strict';
26
+
27
+
28
+ var currentWord;
29
+ var kanji;
30
+ var timer;
31
+ var target = document\.getElementById\('target'\);
32
+ var start =document\.getElementById\('start'\)
33
+ var timerLabel = document\.getElementById\('timer'\);
34
+ var fkanji=document\.getElementById\('fkanji'\);
35
+ var hurigana=document\.getElementById\('hurigana'\)
36
+ var tweet=document\.getElementById\('tweet'\)
37
+ var isStarted;
38
+ var timerId;
39
+ var kotae;
40
+ var huseikai;
41
+ var i;
42
+ var t;
43
+ var seikai;
44
+ var ran;
45
+
46
+
47
+ function init\(\) { //ページが表示されたときの初期表示
48
+ currentWord = '漢字クイズ';
49
+ hurigana\.innerHTML="";
50
+ target\.innerHTML = currentWord;
51
+ timerLabel\.innerHTML ="";
52
+ start\.innerHTML="スタート"
53
+ isStarted = 1;
54
+ tweet\.innerHTML="";
55
+ seikai=0;
56
+ t=0;
57
+ lev=1;
58
+ huseikai=false;
59
+ clearTimeout\(timerId\);
3
- }
60
+ }
61
+
62
+ init\(\);
63
+
64
+
65
+
66
+
67
+ function setTarget\(\) {
68
+ start\.style\.color = "black";
69
+ hurigana\.innerHTML="";
70
+ start\.innerHTML="";
71
+ fkanji\.focus\(\);
72
+ fkanji\.value='';
73
+ ran= Math\.floor\(Math\.random\(\) \* words\[lev-1\]\.length\);
74
+ kanji = words\[lev-1\]\[ran\];
75
+ currentWord= kanji\[0\];
76
+ kotae =kanji\[1\];
77
+ target\.innerHTML = currentWord;
78
+ timer = 5;
79
+ timerLabel\.innerHTML = timer;
80
+ updateTimer\(\);
81
+ if\(seikai>2\){ //5問正解したらレベルアップ
82
+ t=0;
83
+ lev\+\+;
84
+ level\(\);
85
+ }
86
+
87
+ fkanji\.addEventListener\("input", function \(\) {
88
+ if \(fkanji\.value === kotae && huseikai==false\) {//答えが入力されれれば正解、ただしタイムアップ後に入力しても正解にならないよう制御
89
+ words\[lev-1\]\.splice\(ran, 1\);
90
+ fkanji\.value='';
91
+ i=0;
92
+ seikai\+\+;
93
+ show\(\);
94
+
95
+ }
96
+ }\);
97
+
98
+
99
+ function show\(\) { //問題に正解したら数秒間ふりがなと「正解」を表示
100
+ i\+\+;
101
+ start\.style\.color = "red";
102
+ start\.innerHTML="正解";
103
+ hurigana\.innerHTML=kotae;
104
+ clearTimeout\(timerId\);
105
+ timerLabel\.innerHTML ="";
106
+ var tid = setTimeout\(function\(\) {
107
+ show\(\);
108
+ }, 1000\);
109
+ if \(i > 2\) {
110
+ clearTimeout\(tid\);
111
+ setTarget\(\);
112
+ }
113
+ }
114
+
115
+
116
+ function updateTimer\(\) {//タイマー処理
117
+ timer--;
118
+ timerId = setTimeout\(function\(\) {
119
+ timerLabel\.innerHTML = timer;
120
+ if \(timer <= 0\) {
121
+ isStarted=3;
122
+ huseikai=true;
123
+ hurigana\.innerHTML=kotae;
124
+ timerLabel\.innerHTML = "";
125
+ start\.innerHTML = "もう一度";
126
+ tweet\.innerHTML= '<a href="javascript:twitText\(\)">結果をツイートする</a>';
127
+ clearTimeout\(timerId\);
128
+ return;
129
+ }
130
+ updateTimer\(\);
131
+ }, 1000\);
132
+ }
133
+
134
+
135
+
136
+
137
+ }
138
+
139
+
140
+ function level\(\) { //5問正解するごとにレベルアップ
141
+ t\+\+;
142
+ target\.innerHTML="レベル"\+lev;
143
+ hurigana\.innerHTML="";
144
+ clearTimeout\(timerId\);
145
+ timerLabel\.innerHTML ="";
146
+ if\(lev>2\){ //最終レベルまでクリアしたら「全問正解」を表示
147
+ target\.innerHTML = "全問正解!";
148
+ isStarted=3;
149
+ hurigana\.innerHTML="";
150
+ timerLabel\.innerHTML = "";
151
+ start\.innerHTML = "もう一度";
152
+ tweet\.innerHTML= '<a href="javascript:twitText\(\)">結果をツイートする</a>';
153
+ clearTimeout\(tim\);
154
+ clearTimeout\(tid\);
155
+ }
156
+ var tim = setTimeout\(function\(\) {
157
+ level\(\);
158
+ }, 1000\);
159
+ if \(t > 2\) {
160
+ clearTimeout\(tim\);
161
+ seikai=0;
162
+ setTarget\(\);
163
+ }
164
+ }
165
+
166
+
167
+
168
+
169
+ start\.addEventListener\('click', function\(\) {//スタートを押したら開始、もう一度を押したら最初に戻る
170
+ if \(isStarted==1\) {
171
+ isStarted = 2;
172
+ start\.innerHTML="<br>";
173
+ level\(\);
174
+ } else if \(isStarted==2\){
175
+ } else{
176
+ init\(\);
177
+ }
178
+ }\);
179
+
180
+
181
+ }\)\(\);
182
+
183
+
184
+
185
+
186
+ </script>
4
187
  ```
5
-
6
- 半角英数文字の検証を行っているのですが、なぜか全角問題なく読み込まれてしまいます。
188
+ かいて、PC上はうまく動作しているのですが、スマホ上確認すると前の問題で入力しいた文字が残ってしまいます。(fkanjiはinputタグのidです)
189
+ 問題に正解して次の問題が表示されると一度空になるのですが、表示された問題に答えようとして文字を入力すると前の問題の答えが出てきてしまう感じです。
7
- なぜでしょうか
190
+ どうすれば解決きるでしょうか

3

修正

2017/03/02 01:15

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- スマホ上でJavaScriptがうまく動作しない
1
+ JavaScriptで半角英数の正規表現
body CHANGED
@@ -1,8 +1,7 @@
1
- 漢字クイズ作っています
1
+ ```ここに言語入力
2
- 正しい漢字の読み方をinputタグで作ったフォームに入力すると次の問題が表示されるというものです。
2
+ if (val.match(/[^A-Za-z0-9]+/)) {
3
+ }
3
- 正解して次の問題にうつるたびにフォームを空にするため
4
+ ```
4
5
 
5
-
6
- かいて、PC上はうまく動作しているのですが、スマホ上確認すると前の問題で入力しいた文字が残ってしまいます。(fkanjiはinputタグのidです)
6
+ 半角英数文字の検証を行っているのですが、なぜか全角問題なく読み込まれてしまいます。
7
- 問題に正解して次の問題が表示されると一度空になるのですが、表示された問題に答えようとして文字を入力すると前の問題の答えが出てきてしまう感じです。
8
- どうすれば解決きるでしょうか
7
+ なぜでしょうか

2

修正

2017/02/28 14:43

投稿

828kk88
828kk88

スコア62

title CHANGED
File without changes
body CHANGED
@@ -2,189 +2,7 @@
2
2
  正しい漢字の読み方をinputタグで作ったフォームに入力すると次の問題が表示されるというものです。
3
3
  正解して次の問題にうつるたびにフォームを空にするため
4
4
 
5
- ```ここに言語を入力
6
- <div id="content">
7
- <div id="game">
8
- <p id="hurigana"></p>
9
- <p id="target"></p>
10
- <p id="start"></p>
11
- <p id="timer"></p>
12
- </p>
13
- <input type="text" id="fkanji" />
14
- </div>
15
- <div id="tweet"></div>
16
- <script src="../ads.js"></script>
17
5
 
18
- </div>
19
- <script src="../footer.js"></script>
20
-
21
-
22
- <script>
23
- var lev;
24
- (function() {
25
- 'use strict';
26
-
27
-
28
- var currentWord;
29
- var kanji;
30
- var timer;
31
- var target = document.getElementById('target');
32
- var start =document.getElementById('start')
33
- var timerLabel = document.getElementById('timer');
34
- var fkanji=document.getElementById('fkanji');
35
- var hurigana=document.getElementById('hurigana')
36
- var tweet=document.getElementById('tweet')
37
- var isStarted;
38
- var timerId;
39
- var kotae;
40
- var huseikai;
41
- var i;
42
- var t;
43
- var seikai;
44
- var ran;
45
-
46
-
47
- function init() { //ページが表示されたときの初期表示
48
- currentWord = '漢字クイズ';
49
- hurigana.innerHTML="";
50
- target.innerHTML = currentWord;
51
- timerLabel.innerHTML ="";
52
- start.innerHTML="スタート"
53
- isStarted = 1;
54
- tweet.innerHTML="";
55
- seikai=0;
56
- t=0;
57
- lev=1;
58
- huseikai=false;
59
- clearTimeout(timerId);
60
- }
61
-
62
- init();
63
-
64
-
65
-
66
-
67
- function setTarget() {
68
- start.style.color = "black";
69
- hurigana.innerHTML="";
70
- start.innerHTML="";
71
- fkanji.focus();
72
- fkanji.value='';
73
- ran= Math.floor(Math.random() * words[lev-1].length);
74
- kanji = words[lev-1][ran];
75
- currentWord= kanji[0];
76
- kotae =kanji[1];
77
- target.innerHTML = currentWord;
78
- timer = 5;
79
- timerLabel.innerHTML = timer;
80
- updateTimer();
81
- if(seikai>2){ //5問正解したらレベルアップ
82
- t=0;
83
- lev++;
84
- level();
85
- }
86
-
87
- fkanji.addEventListener("input", function () {
88
- if (fkanji.value === kotae && huseikai==false) {//答えが入力されれれば正解、ただしタイムアップ後に入力しても正解にならないよう制御
89
- words[lev-1].splice(ran, 1);
90
- fkanji.value='';
91
- i=0;
92
- seikai++;
93
- show();
94
-
95
- }
96
- });
97
-
98
-
99
- function show() { //問題に正解したら数秒間ふりがなと「正解」を表示
100
- i++;
101
- start.style.color = "red";
102
- start.innerHTML="正解";
103
- hurigana.innerHTML=kotae;
104
- clearTimeout(timerId);
105
- timerLabel.innerHTML ="";
106
- var tid = setTimeout(function() {
107
- show();
108
- }, 1000);
109
- if (i > 2) {
110
- clearTimeout(tid);
111
- setTarget();
112
- }
113
- }
114
-
115
-
116
- function updateTimer() {//タイマー処理
117
- timer--;
118
- timerId = setTimeout(function() {
119
- timerLabel.innerHTML = timer;
120
- if (timer <= 0) {
121
- isStarted=3;
122
- huseikai=true;
123
- hurigana.innerHTML=kotae;
124
- timerLabel.innerHTML = "";
125
- start.innerHTML = "もう一度";
126
- tweet.innerHTML= '<a href="javascript:twitText()">結果をツイートする</a>';
127
- clearTimeout(timerId);
128
- return;
129
- }
130
- updateTimer();
131
- }, 1000);
132
- }
133
-
134
-
135
-
136
-
137
- }
138
-
139
-
140
- function level() { //5問正解するごとにレベルアップ
141
- t++;
142
- target.innerHTML="レベル"+lev;
143
- hurigana.innerHTML="";
144
- clearTimeout(timerId);
145
- timerLabel.innerHTML ="";
146
- if(lev>2){ //最終レベルまでクリアしたら「全問正解」を表示
147
- target.innerHTML = "全問正解!";
148
- isStarted=3;
149
- hurigana.innerHTML="";
150
- timerLabel.innerHTML = "";
151
- start.innerHTML = "もう一度";
152
- tweet.innerHTML= '<a href="javascript:twitText()">結果をツイートする</a>';
153
- clearTimeout(tim);
154
- clearTimeout(tid);
155
- }
156
- var tim = setTimeout(function() {
157
- level();
158
- }, 1000);
159
- if (t > 2) {
160
- clearTimeout(tim);
161
- seikai=0;
162
- setTarget();
163
- }
164
- }
165
-
166
-
167
-
168
-
169
- start.addEventListener('click', function() {//スタートを押したら開始、もう一度を押したら最初に戻る
170
- if (isStarted==1) {
171
- isStarted = 2;
172
- start.innerHTML="<br>";
173
- level();
174
- } else if (isStarted==2){
175
- } else{
176
- init();
177
- }
178
- });
179
-
180
-
181
- })();
182
-
183
-
184
-
185
-
186
- </script>
187
- ```
188
6
  とかいて、PC上ではうまく動作しているのですが、スマホ上で確認すると前の問題で入力していた文字が残ってしまいます。(fkanjiはinputタグのidです)
189
7
  問題に正解して次の問題が表示されると一度空になるのですが、表示された問題に答えようとして文字を入力すると前の問題の答えが出てきてしまう感じです。
190
8
  どうすれば解決できるでしょうか

1

追記

2017/02/28 09:19

投稿

828kk88
828kk88

スコア62

title CHANGED
File without changes
body CHANGED
@@ -3,7 +3,188 @@
3
3
  正解して次の問題にうつるたびにフォームを空にするため
4
4
 
5
5
  ```ここに言語を入力
6
+ <div id="content">
7
+ <div id="game">
8
+ <p id="hurigana"></p>
9
+ <p id="target"></p>
10
+ <p id="start"></p>
11
+ <p id="timer"></p>
12
+ </p>
13
+ <input type="text" id="fkanji" />
14
+ </div>
15
+ <div id="tweet"></div>
16
+ <script src="../ads.js"></script>
17
+
18
+ </div>
19
+ <script src="../footer.js"></script>
20
+
21
+
22
+ <script>
23
+ var lev;
24
+ (function() {
25
+ 'use strict';
26
+
27
+
28
+ var currentWord;
29
+ var kanji;
30
+ var timer;
31
+ var target = document.getElementById('target');
32
+ var start =document.getElementById('start')
33
+ var timerLabel = document.getElementById('timer');
34
+ var fkanji=document.getElementById('fkanji');
35
+ var hurigana=document.getElementById('hurigana')
36
+ var tweet=document.getElementById('tweet')
37
+ var isStarted;
38
+ var timerId;
39
+ var kotae;
40
+ var huseikai;
41
+ var i;
42
+ var t;
43
+ var seikai;
44
+ var ran;
45
+
46
+
47
+ function init() { //ページが表示されたときの初期表示
48
+ currentWord = '漢字クイズ';
49
+ hurigana.innerHTML="";
50
+ target.innerHTML = currentWord;
51
+ timerLabel.innerHTML ="";
52
+ start.innerHTML="スタート"
53
+ isStarted = 1;
54
+ tweet.innerHTML="";
55
+ seikai=0;
56
+ t=0;
57
+ lev=1;
58
+ huseikai=false;
59
+ clearTimeout(timerId);
60
+ }
61
+
62
+ init();
63
+
64
+
65
+
66
+
67
+ function setTarget() {
68
+ start.style.color = "black";
69
+ hurigana.innerHTML="";
70
+ start.innerHTML="";
71
+ fkanji.focus();
6
72
  fkanji.value='';
73
+ ran= Math.floor(Math.random() * words[lev-1].length);
74
+ kanji = words[lev-1][ran];
75
+ currentWord= kanji[0];
76
+ kotae =kanji[1];
77
+ target.innerHTML = currentWord;
78
+ timer = 5;
79
+ timerLabel.innerHTML = timer;
80
+ updateTimer();
81
+ if(seikai>2){ //5問正解したらレベルアップ
82
+ t=0;
83
+ lev++;
84
+ level();
85
+ }
86
+
87
+ fkanji.addEventListener("input", function () {
88
+ if (fkanji.value === kotae && huseikai==false) {//答えが入力されれれば正解、ただしタイムアップ後に入力しても正解にならないよう制御
89
+ words[lev-1].splice(ran, 1);
90
+ fkanji.value='';
91
+ i=0;
92
+ seikai++;
93
+ show();
94
+
95
+ }
96
+ });
97
+
98
+
99
+ function show() { //問題に正解したら数秒間ふりがなと「正解」を表示
100
+ i++;
101
+ start.style.color = "red";
102
+ start.innerHTML="正解";
103
+ hurigana.innerHTML=kotae;
104
+ clearTimeout(timerId);
105
+ timerLabel.innerHTML ="";
106
+ var tid = setTimeout(function() {
107
+ show();
108
+ }, 1000);
109
+ if (i > 2) {
110
+ clearTimeout(tid);
111
+ setTarget();
112
+ }
113
+ }
114
+
115
+
116
+ function updateTimer() {//タイマー処理
117
+ timer--;
118
+ timerId = setTimeout(function() {
119
+ timerLabel.innerHTML = timer;
120
+ if (timer <= 0) {
121
+ isStarted=3;
122
+ huseikai=true;
123
+ hurigana.innerHTML=kotae;
124
+ timerLabel.innerHTML = "";
125
+ start.innerHTML = "もう一度";
126
+ tweet.innerHTML= '<a href="javascript:twitText()">結果をツイートする</a>';
127
+ clearTimeout(timerId);
128
+ return;
129
+ }
130
+ updateTimer();
131
+ }, 1000);
132
+ }
133
+
134
+
135
+
136
+
137
+ }
138
+
139
+
140
+ function level() { //5問正解するごとにレベルアップ
141
+ t++;
142
+ target.innerHTML="レベル"+lev;
143
+ hurigana.innerHTML="";
144
+ clearTimeout(timerId);
145
+ timerLabel.innerHTML ="";
146
+ if(lev>2){ //最終レベルまでクリアしたら「全問正解」を表示
147
+ target.innerHTML = "全問正解!";
148
+ isStarted=3;
149
+ hurigana.innerHTML="";
150
+ timerLabel.innerHTML = "";
151
+ start.innerHTML = "もう一度";
152
+ tweet.innerHTML= '<a href="javascript:twitText()">結果をツイートする</a>';
153
+ clearTimeout(tim);
154
+ clearTimeout(tid);
155
+ }
156
+ var tim = setTimeout(function() {
157
+ level();
158
+ }, 1000);
159
+ if (t > 2) {
160
+ clearTimeout(tim);
161
+ seikai=0;
162
+ setTarget();
163
+ }
164
+ }
165
+
166
+
167
+
168
+
169
+ start.addEventListener('click', function() {//スタートを押したら開始、もう一度を押したら最初に戻る
170
+ if (isStarted==1) {
171
+ isStarted = 2;
172
+ start.innerHTML="<br>";
173
+ level();
174
+ } else if (isStarted==2){
175
+ } else{
176
+ init();
177
+ }
178
+ });
179
+
180
+
181
+ })();
182
+
183
+
184
+
185
+
186
+ </script>
7
187
  ```
8
188
  とかいて、PC上ではうまく動作しているのですが、スマホ上で確認すると前の問題で入力していた文字が残ってしまいます。(fkanjiはinputタグのidです)
189
+ 問題に正解して次の問題が表示されると一度空になるのですが、表示された問題に答えようとして文字を入力すると前の問題の答えが出てきてしまう感じです。
9
190
  どうすれば解決できるでしょうか