スライドショー ①
目標#
いくつかの画像が順番に表示されるスライドショーを作ろう
サンプルコード#
1.HTMLのコードを、Glitchの index.html に追加しよう!#
<div class="intro"> <img src="https://i.ibb.co/YdKJgp3/y0726.png" alt="fruits" border="0" id="slide-show"/></div>2.CSSのコードを、Glitchの style.css に追加しよう!#
.intro { text-align: center; font-weight: bold;}
.intro img { display: block; margin: 0 auto 10px; width: 300px; height: 300px;}3.JavaScriptのコードを、Glitchの script.js に追加しよう!#
const newImgList = [ "https://i.ibb.co/qmh0t78/cherry.png", "https://i.ibb.co/XpX2ykx/orange.png", "https://i.ibb.co/gDNwgt9/apple.pn",]
// まずは配列の考え方からfunction slide_time() { // numには0から3がランダムに入る let num = Math.floor(Math.random() * newImgList.length) // 要素を取得 const slideImg = document.getElementById("slide-show") // 要素に対して、実行(今回は、属性を付与) slideImg.setAttribute("src", newImgList[num])}// 関数を呼び出すsetInterval(slide_time, 3000)チャレンジ#
ボタンを使って、スライドショーを止めたり動かしたりできるようにしよう!

今作ったスライドショーは、止まらずにずっと動いています。もしじっくり見たい画像があるとき、スライドショーを止めるストップボタンがあると嬉しいですね! そういう動きをするボタンを作ってみましょう!
1.HTMLのコードを、Glitchの index.html に追加しよう!#
上で書いたコードのうち、divタグ の中で imgタグ の下に以下の4行を追加しよう。
<div class="intro"> <!-- ↓ このコードはすでに書いたので今回は不要--> <!-- <img src="../../imgs/fruits.png" id="slide-show" /> --> <!-- ボタンを追加 --> <div class="btn-area"> <a class="btn" id="start-btn">start</a> <a class="btn" id="stop-btn">stop</a> </div></div>2.CSSのコードを、Glitchの style.css に追加しよう!#
.btn { display: inline-block; width: 80px; line-height: 50px; cursor: pointer; background-color: antiquewhite; margin: 10px;}
.btn-area{ display: flex; justify-content: center;}3.JavaScriptのコードを、Glitchの script.js に追加しよう!#
// ボタンの情報を取得: TRYconst startBtn = document.getElementById("start-btn")const stopBtn = document.getElementById("stop-btn")
let timerID
function startSlide() { console.log("start") timerID = setInterval(slide_time, 2000)}function stopSlide() { console.log("stop") clearInterval(timerID)}
4.(TRY!) と書いてある箇所を書き換えて、コードを完成させよう!#
--------- 解答例 -------------
- script.jsの変更点は以下の通り
const week = ["日", "月", "火", "水", "木", "金", "土"]const today = new Date()// (TRY!) yearには、「年」を取得して代入しようlet year = today.getYear()// (TRY!) monthには、「月」を取得して代入しようlet month = today.getMonth() + 1
//あとは省略- index.htmlの変更点は以下の通り
<div class="intro"> <!-- ↓ このコードはすでに書いたので今回は不要--> <!-- <img src="../../imgs/fruits.png" id="slide-show" /> --> <!-- ボタンを追加 --> <div class="btn-area"> <a class="btn" id="start-btn" onclick="startSlide()">start</a> <a class="btn" id="stop-btn" onclick="stopSlide()">stop</a> </div></div>--------------------------------