回答編集履歴

1

コメント欄対応

2018/03/01 11:37

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -55,3 +55,65 @@
55
55
  JavaScriptのsetIntervalを始めとするイベントループの機能はとても優秀で、
56
56
 
57
57
  発火すべきタイミングまでひたすらサボり続ける低燃費の設計になっています。
58
+
59
+
60
+
61
+ ---
62
+
63
+
64
+
65
+ 【おまけ】 コメント欄のコード
66
+
67
+
68
+
69
+ 外にあるi変数に依存しないようにしました。
70
+
71
+ こんな感じかなぁと思います。
72
+
73
+
74
+
75
+ ```JavaScript
76
+
77
+ // DOMを触るので描画完了まで遅延させたほうが良い
78
+
79
+ document.addEventListener("load", function () {
80
+
81
+ var items = [0, 1, 2, 3].map(function(it){ return document.getElementById('slide' + it); });
82
+
83
+ var fadeIn = function (i) {
84
+
85
+ items[i].classList.add('slide-fadein');
86
+
87
+ items[i].classList.remove('slide-fadeout');
88
+
89
+ }
90
+
91
+ var fadeOut = function (i) {
92
+
93
+ items[i].classList.add('slide-fadeout');
94
+
95
+ items[i].classList.remove('slide-fadein');
96
+
97
+ }
98
+
99
+ var slideShow = function (i) {
100
+
101
+ if (i => items.length) {
102
+
103
+ i = 0;
104
+
105
+ }
106
+
107
+ fadeIn(i);
108
+
109
+ fadeOut(i === 0 ? items.length - 1 : i - 1);
110
+
111
+ setTimeout(slideShow.bind(null, i + 1), 18000);
112
+
113
+ }
114
+
115
+ setTimeout(slideShow.bind(null, 0), 18000);
116
+
117
+ });
118
+
119
+ ```