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

回答編集履歴

1

Edgeではうまく動作しないとのことで、alertの実行タイミングを非同期にコントロールするよう修正

2019/06/09 04:52

投稿

miyabi_pudding
miyabi_pudding

スコア9604

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
- alert("OK");
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
- alert("不正解です。もう一度最初から計算してください。");
75
+ alert("不正解です。もう一度最初から計算してください。");
76
+ }, 10);
77
+
62
78
  //最初の問題に戻る
63
79
  cur = start;
64
80
  document.getElementById("answer").value = "";