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

回答編集履歴

3

ローカル変数省略版のサンプルコードを追記

2017/01/13 02:46

投稿

think49
think49

スコア18194

answer CHANGED
@@ -55,8 +55,20 @@
55
55
  }, 1000, 'counter');
56
56
  ```
57
57
 
58
+ **(2017/01/13 11:45 追記)**
59
+ 上記コードでは分かりやすいようにローカル変数を使用していますが、それぞれの変数は1回ずつの使用なので変数宣言を省略する事も出来ます。
60
+
61
+ ```JavaScript
62
+ setInterval(function handleCountDown (id) {
63
+ if (--this.document.getElementById(id).firstChild.data < 1) {
64
+ location.replace('http://example.com/');
65
+ }
66
+ }, 1000, 'counter');
67
+ ```
68
+
58
69
  ### 更新履歴
59
70
 
60
71
  - 2017/01/13 11:35 サンプルコードを追記
72
+ - 2017/01/13 11:45 ローカル変数省略版のサンプルコードを追記
61
73
 
62
74
  Re: rento さん

2

サンプルコードを更に追記

2017/01/13 02:45

投稿

think49
think49

スコア18194

answer CHANGED
@@ -40,4 +40,23 @@
40
40
  </script>
41
41
  ```
42
42
 
43
+ 関数式にすればグローバル汚染もなくなります。
44
+ その場合は引数 `id` を排除してもいいですが、設計指針の好みの範疇だと思います。
45
+
46
+ ```JavaScript
47
+ 'use strict';
48
+ setInterval(function handleCountDown (id) {
49
+ var textNode = this.document.getElementById(id).firstChild,
50
+ count = --textNode.data;
51
+
52
+ if (count < 1) {
53
+ location.replace('http://example.com/');
54
+ }
55
+ }, 1000, 'counter');
56
+ ```
57
+
58
+ ### 更新履歴
59
+
60
+ - 2017/01/13 11:35 サンプルコードを追記
61
+
43
62
  Re: rento さん

1

サンプルコードの追記

2017/01/13 02:35

投稿

think49
think49

スコア18194

answer CHANGED
@@ -16,4 +16,28 @@
16
16
  - [Windows クライアント OS の製品サポートライフサイクル ポリシー更新について (2012 年 2 月) - Microsoft](https://www.microsoft.com/ja-jp/windows/lifecycle/default.aspx?navIndex=3#vista)
17
17
  - [Callback arguments - WindowOrWorkerGlobalScope.setInterval() - Web APIs | MDN](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval#Callback_arguments)
18
18
 
19
+ ### サンプルコード
20
+
21
+ - [サンプル - codepen](http://codepen.io/anon/pen/NdrWBR)
22
+
23
+ ```HTML
24
+ <p><span id="counter">5</span>秒後にログインページへ移動します。</p>
25
+ <ul>
26
+ <li><a href="https://teratail.com/questions/61815">JavaScript - javascript メソッドがうまく組めない(61815)|teratail</a></li>
27
+ </ul>
28
+ <script>
29
+ 'use strict';
30
+ function handleCountDown (id) {
31
+ var textNode = this.document.getElementById(id).firstChild,
32
+ count = --textNode.data;
33
+
34
+ if (count < 1) {
35
+ location.replace('http://example.com/');
36
+ }
37
+ }
38
+
39
+ setInterval(handleCountDown, 1000, 'counter');
40
+ </script>
41
+ ```
42
+
19
43
  Re: rento さん