前提・実現したいこと
画像に付与しているclass(画像をグレースケースにしている)をアクティブなときは正常な画像用のクラスで表示させたいです。
一枚の画像だと簡単に出来たのに、複数画像でAがアクティブならB以降はグレー、BがアクティブなときはAとC以降はグレーのようにループさせようとすると出来ませんでした。ご教授お願いいたします。
発生している問題・エラーメッセージ
HTML
1<div class="Wrap"> 2<div><img src="img/hoge1.jpg" class="item-gray" id="item1"></div> 3<div><img src="img/hoge2.jpg" class="item-gray" id="item2"></div> 4<div><img src="img/hoge3.jpg" class="item-gray" id="item3"></div> 5<div><img src="img/hoge4.jpg" class="item-gray" id="item4"></div> 6<div><img src="img/hoge5.jpg" class="item-gray" id="item5"></div> 7<div><img src="img/hoge6.jpg" class="item-gray" id="item6"></div> 8</div>
該当のソースコード
javascript
1<script type="text/javascript"> 2(function () { 3 var item0 = document.getElementById('item1'); 4 var item1 = document.getElementById('item2'); 5 var item2 = document.getElementById('item3'); 6 var item3 = document.getElementById('item4'); 7 var item4 = document.getElementById('item5'); 8 var item5 = document.getElementById('item6'); 9 var arrayItem = [ 10 item0, 11 item1, 12 item2, 13 item3, 14 item4, 15 item5 16 ]; 17 var i = 0; 18 (function loop() { 19 arrayItem[i].classList.add('item-gray'); 20 arrayItem[i].classList.remove('item-active'); 21 ++i; 22 if (i === arrayItem.length) { 23 i = 0; 24 } 25 arrayItem[i].classList.add('item-active'); 26 arrayItem[i].classList.remove('item-gray'); 27 setTimeout(loop, 6000); 28 }) (); 29}) (); 30</script>
試したこと
過去の質問を見ながら、組み合わせてできるか挑戦しました。
補足情報(FW/ツールのバージョンなど)
初学者のため、変な書き方をしている箇所があるかもしれません。
回答2件
あなたの回答
tips
プレビュー