表題の通り、JSで画像を5秒間隔で2枚同時に切り替えるプログラムの書き方でつまずいています。
HTMLとCSSは問題なさそうですが、JSで2回目以降の画像切り替えができません。
JSでどのように記述したら、正しくCSSを反映させたまま画像を切り替え表示させ続けることが可能でしょうか?
お手数をおかけしますが、ご助言のほどお願いします。
以下、そのコードを貼ります。
HTML
1<!DOCTYPE html> 2<html> 3<head> 4 <meta charset="utf-8"> 5 <title>自動画像切り替えページ</title> 6 <link rel="stylesheet" href="index.css"> 7<!-- <script src="index.js"></script> --> 8</head> 9<body> 10 <img" id="pic_1" src="pictures/1.png"> 11 <h1>画像切り替えサイト</h1> 12 <h2>* 5秒ごとに画像を切り替えます</h2> 13 <div class="pic_container"> 14 <script src="index.js"></script> 15 <script src="index.js"></script> 16 <!-- <img id="pic_1" src="pictures/1.png"> 17 <img id="pic_2" src="pictures/4.png"> --> 18 </div> 19</body> 20</html>
CSS
1html{ 2 background-color: black; 3} 4 5h1{ 6 padding-left: 450px; 7 color: white; 8 display: inline; 9} 10 11h2{ 12 display: inline; 13 color: white; 14 padding-left: 80px; 15} 16 17.pic_container { 18 padding-top: 15px; 19 display: flex; 20 justify-content: space-between; 21} 22 23img{ 24 /*JSのHTML出力したも要素であっても対応する。*/ 25 height: 460px; 26 width: 620px; 27}
JavaScript
1var rPicList = new Array( 2 "pictures/1.png","pictures/2.png","pictures/3.png","pictures/4.png","pictures/5.png"); 3 4 var num = -1; 5 slideshow_timer(); 6 function slideshow_timer(){ 7 var pNum = Math.floor(Math.random() * rPicList.length); 8 var printHtml = '<img src=' + rPicList[pNum] + '>'; 9 10 // if (num == rPicList.length){ 11 // num = 0; 12 // printHtml.remove(); 13 // } 14 // else { 15 // num ++; 16 // // var printHtml = '<img src=' + rPicList[pNum] + '>'; 17 // // document.remove(printHtml); 18 // } 19 20 // if () {} 21 document.write(printHtml); 22 // document.remove(printHtml); 23 setTimeout("slideshow_timer()",5000); 24 }
removeメソッドを使えば、HTMLとして出力した画像を切り替えられると予想しましたが、失敗しました。
removeメソッドが効かず一度だけ画像が変わった後、無限に画像がランダムに2枚ずつビュー上で表示されます。
このため、ページ自体が無限に縦長になっていきます。
JavaScript
1var rPicList = new Array( 2 "pictures/1.png","pictures/2.png","pictures/3.png","pictures/4.png","pictures/5.png", 3 "pictures/6.png","pictures/7.png","pictures/8.png","pictures/9.png","pictures/10.png", 4 "pictures/11.png","pictures/12.png","pictures/13.png","pictures/14.png","pictures/15.png", 5 "pictures/16.png","pictures/17.png","pictures/18.png","pictures/19.png","pictures/20.png", 6 "pictures/21.png","pictures/22.png","pictures/23.png","pictures/24.png","pictures/25.png", 7 "pictures/26.png","pictures/27.png","pictures/28.png","pictures/29.png"); 8 9slideshow_timer(); 10function slideshow_timer(){ 11 var pNum = Math.floor(Math.random() * rPicList.length); 12 var printHtml = new Image();// imgタグを生成 13 printHtml.src = rPicList[pNum]; 14 document.querySelector('.pic_container > img').remove(); 15 document.querySelector('.pic_container').appendChild(printHtml); 16 setTimeout("slideshow_timer()",5000); 17}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/01 04:38
2020/11/01 05:00
2020/11/01 05:01
2020/11/01 05:35
2020/11/01 05:42
2020/11/01 05:46
2020/11/01 05:49
2020/11/01 05:54
2020/11/01 05:59
2020/11/01 06:15 編集
2020/11/01 06:33
2020/11/01 06:46