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

回答編集履歴

1

追記

2018/11/01 07:30

投稿

taka-saan
taka-saan

スコア665

answer CHANGED
@@ -1,4 +1,44 @@
1
1
  setTimeout()で戻り値が返ってきますからそれを覚えておいて、
2
2
  clearTimeout(その値)で止まります。
3
3
 
4
- (それでは実現できないということでしょうか?)
4
+ (それでは実現できないということでしょうか?)
5
+
6
+ > ざっと調べた感じ、次のように書けばいいかなと思いましたがこれではできませんでした。
7
+
8
+ var をつけるとローカル変数になってしまうので外に出して、こんな感じです。
9
+
10
+ ```
11
+ var action1=null;
12
+ var action2=null;
13
+ var action3=null;
14
+
15
+ // hello表示アクション
16
+ function Action(){
17
+ action1 = setTimeout(function(){
18
+ $('.hello').fadeIn();
19
+ },500);
20
+ action2 = setTimeout(function(){
21
+ $('.hello').fadeOut();
22
+ },2000);
23
+ action3 = setTimeout(function(){
24
+ $('.modal').css('display','none');
25
+ },2500);
26
+ }
27
+
28
+ // openクリックでhelloを表示
29
+ $(".open").on("click", function(){
30
+ $('.modal').css('display','flex');
31
+ Action();
32
+ });
33
+
34
+ // modalの全体クリックでmodalもHelloも非表示
35
+ $(".modal").on("click", function(){
36
+ $('.modal').css('display','none');
37
+ $('.hello').css('display','none');
38
+ /* ここでActionのsettimeoutを中断させたい */
39
+
40
+ if( action1 ) clearTimeout(action1);
41
+ if( action2 ) clearTimeout(action2);
42
+ if( action3 ) clearTimeout(action3);
43
+ });
44
+ ```