回答編集履歴
1
かみくだく
test
CHANGED
@@ -81,3 +81,115 @@
|
|
81
81
|
</div>
|
82
82
|
|
83
83
|
```
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
# すこし噛み砕いて
|
88
|
+
|
89
|
+
```javascript
|
90
|
+
|
91
|
+
<style>
|
92
|
+
|
93
|
+
.card{display:none}
|
94
|
+
|
95
|
+
.card.active{display:block;}
|
96
|
+
|
97
|
+
</style>
|
98
|
+
|
99
|
+
<script>
|
100
|
+
|
101
|
+
window.addEventListener('DOMContentLoaded', function(e){
|
102
|
+
|
103
|
+
if(!document.querySelector('.card.active')){ // .cardの中に.activeクラスがついた要素がなければ
|
104
|
+
|
105
|
+
document.querySelector('.card').classList.add('active'); // .cardの先頭要素にactiveクラスをつける
|
106
|
+
|
107
|
+
}
|
108
|
+
|
109
|
+
var cards=document.querySelectorAll('.card'); // .cardをcardsで受けておく
|
110
|
+
|
111
|
+
var buttons=document.querySelectorAll('.button'); // .buttonをbuttonsで受けておく
|
112
|
+
|
113
|
+
[].forEach.call(buttons,function(x){ // buttonsから要素を1つずつxとして受け取ってループ
|
114
|
+
|
115
|
+
x.addEventListener('click',function(e){ // xのclickイベントを拾って動作を指定
|
116
|
+
|
117
|
+
var button=e.target.id; // 押されたボタンのidを拾っておく
|
118
|
+
|
119
|
+
var len=cards.length -1; // cardsの要素数を拾って1引く=最大値のインデックス
|
120
|
+
|
121
|
+
var idxs=[].map.call(cards,function(x){ // cardsから要素を1つずつxとして受け取って
|
122
|
+
|
123
|
+
return x.classList.contains('active')?1:0; // activeクラスを持っていたら1そうでなければ0を返す
|
124
|
+
|
125
|
+
});
|
126
|
+
|
127
|
+
var idx=idxs.indexOf(1); // idxs配列から値が1のインデックスを返す
|
128
|
+
|
129
|
+
if(button=="prev"){ // ボタンのidがprevだったら
|
130
|
+
|
131
|
+
--idx; // idxをデクリメントし
|
132
|
+
|
133
|
+
if(idx<0){ // idxが0未満になったら
|
134
|
+
|
135
|
+
idx=len; // idxを最大値のインデックスであるlenに変える
|
136
|
+
|
137
|
+
}
|
138
|
+
|
139
|
+
}
|
140
|
+
|
141
|
+
if(button=="next"){ // ボタンのidがnextだったら
|
142
|
+
|
143
|
+
++idx; // idxをインクリメントし
|
144
|
+
|
145
|
+
if(idx>len){ // idxが最大値のインデックスであるlenを超えたら
|
146
|
+
|
147
|
+
idx=0; // 0にする
|
148
|
+
|
149
|
+
}
|
150
|
+
|
151
|
+
}
|
152
|
+
|
153
|
+
[].forEach.call(cards,function(x,y){ // cardsから要素を1つずつx、そのインデックスをyで受け取り
|
154
|
+
|
155
|
+
if(y==idx){ // yとidxが同じなら
|
156
|
+
|
157
|
+
x.classList.add('active'); // xのクラスにactiveを付加
|
158
|
+
|
159
|
+
}else{ // そうでないなら
|
160
|
+
|
161
|
+
x.classList.remove('active'); // xのクラスからactiveを削除
|
162
|
+
|
163
|
+
}
|
164
|
+
|
165
|
+
});
|
166
|
+
|
167
|
+
|
168
|
+
|
169
|
+
});
|
170
|
+
|
171
|
+
});
|
172
|
+
|
173
|
+
});
|
174
|
+
|
175
|
+
</script>
|
176
|
+
|
177
|
+
<div class="stage">
|
178
|
+
|
179
|
+
<div id="prev" class="button">prev</div>
|
180
|
+
|
181
|
+
<ul id="cards">
|
182
|
+
|
183
|
+
<li id="check" class="card">1</li>
|
184
|
+
|
185
|
+
<li id="retry" class="card">2</li>
|
186
|
+
|
187
|
+
<li id="last" class="card">3</li>
|
188
|
+
|
189
|
+
</ul>
|
190
|
+
|
191
|
+
<div id="next" class="button">next</div>
|
192
|
+
|
193
|
+
</div>
|
194
|
+
|
195
|
+
```
|