前提・実現したいこと
三枚の画像を順番に横移動させてスライドショーを作ろうと思っています。
appendchild()を使って、スライドされた画像を最後の要素に追加するようにしてループさせようと
しているのですが、appendChildが初回のみしか作動されずなかなかうまくいきません。
なにかうまく方法があれば教えてください。
発生している問題・エラーメッセージ
appendChildが初回のみしか適応されず、二回目以降スライドされた画像が後ろにいかない。
該当のソースコード
javascript
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <title>スライドショー</title> 8</head> 9<body> 10 <style> 11 * { 12 margin: 0; 13 padding: 0; 14 box-sizing: border-box; 15 } 16 17 .slideshow { 18 width: 500px; 19 height: 300px; 20 overflow: hidden; 21 margin: 100px; 22 } 23 .slide { 24 display: flex; 25 } 26 .slide li { 27 width: 500px; 28 height: 300px; 29 list-style-type: none; 30 31 } 32 .slide li img { 33 width: 500px; 34 height: 300px; 35 object-fit: cover; 36 } 37 .active{ 38 margin-left: -500px; 39 } 40 </style> 41 <div class="slideshow"> 42 <ul class="slide"> 43 <li><img src="https://photosku.com/images_file/small_images/s004_430.jpg"></li> 44 <li><img src="https://photosku.com/images_file/small_images/s007_187.jpg"></li> 45 <li><img src="https://photosku.com/images_file/small_images/s004_972.jpg"></li> 46 </ul> 47 </div> 48 <script> 49 window.onload = sshow; 50 let slideshow = document.querySelector('.slide'); 51 let imgSlide = document.querySelector('li'); 52 let cnt = -1; 53 54 function sshow() { 55 56 if (cnt === 0){ 57 slideshow.classList.add('active'); 58 slideshow.style.transition = '2s'; 59 } 60 61 if (cnt === 2) { 62 slideshow.appendChild(imgSlide); 63 cnt = -1; 64 slideshow.style.transition = 'none'; 65 slideshow.classList.remove('active'); 66 } 67 68 cnt++; 69 setTimeout(sshow,2000) 70 } 71 </script> 72</body> 73</html>
補足情報(FW/ツールのバージョンなど)
エディタvscode ブラウザgooglechrome
回答1件
あなたの回答
tips
プレビュー