回答編集履歴
1
Edgeではうまく動作しないとのことで、alertの実行タイミングを非同期にコントロールするよう修正
answer
CHANGED
|
@@ -39,7 +39,9 @@
|
|
|
39
39
|
```javascript
|
|
40
40
|
const start = 1000;
|
|
41
41
|
const unit = 5;
|
|
42
|
-
var cur = start
|
|
42
|
+
var cur = start,
|
|
43
|
+
// アラート用のタイマーを外側で持っておく
|
|
44
|
+
alertTimer = null;
|
|
43
45
|
|
|
44
46
|
// タイマーの関数定義を先に持ってくる。(未定義エラーを回避)
|
|
45
47
|
// プラス、定義の仕方を変え、setIntervalをクリアできる定義の仕方にする。
|
|
@@ -53,12 +55,26 @@
|
|
|
53
55
|
if(document.getElementById("answer").value == (cur - unit)){
|
|
54
56
|
// 正解の場合は、ここでタイマーをクリアする
|
|
55
57
|
clearInterval(alertmsg);
|
|
58
|
+
// アラートのタイマーが生きてるなら、クリア
|
|
59
|
+
if (alertTimer) {
|
|
60
|
+
clearTimeout(alertTimer);
|
|
61
|
+
}
|
|
62
|
+
alertTimer = setTimeout(function(){
|
|
56
|
-
|
|
63
|
+
alert("OK");
|
|
64
|
+
}, 10);
|
|
57
65
|
cur -= unit;
|
|
58
66
|
|
|
59
67
|
//次の問題に回答する
|
|
60
68
|
} else {
|
|
69
|
+
// こちらも一応、アラートのタイマーをいれておく
|
|
70
|
+
// アラートのタイマーが生きてるなら、クリア
|
|
71
|
+
if (alertTimer) {
|
|
72
|
+
clearTimeout(alertTimer);
|
|
73
|
+
}
|
|
74
|
+
alertTimer = setTimeout(function(){
|
|
61
|
-
|
|
75
|
+
alert("不正解です。もう一度最初から計算してください。");
|
|
76
|
+
}, 10);
|
|
77
|
+
|
|
62
78
|
//最初の問題に戻る
|
|
63
79
|
cur = start;
|
|
64
80
|
document.getElementById("answer").value = "";
|