LoginSignup
0
0

More than 3 years have passed since last update.

スライドショー

Last updated at Posted at 2021-04-21

今回のスライドショーでは、次へ、前へボタンをクリックせれたら配列に登録されているimgを切り替える。今何枚目の画像をみているのかわかるようにする。

index.html
<div class="slide">
        <div class="image_box">
            <img id="main_image" src="images/image1.jpg">
        </div>
        <div class="toolbar">
            <div class="nav">
                <div id="prev"></div>
                <div id="page"></div>
                <div id="next"></div>
            </div>
        </div>
    </div>

image_boxにimgの id=main_iamdeをセットします。これは、スライドの一番最初の画像になります。
さらに、ツールバーの中は今回はスライドショーを操作するためのツールです。上から前へ、ページ数、次へのボタンになります。

index.js
const images = ['images/image1.jpg', 'images/image2.jpg', 'images/image3.jpg', 'images/image4.jpg', 'images/image5.jpg'];
let current = 0;

function changeImage(num) {
    if(current + num >= 0 && current + num < images.length) {
        current += num;
        document.getElementById('main_image').src = images[current];
        pageNum();
    }
};

function pageNum() {
    document.getElementById('page').textContent = `${current + 1}/${images.length}`;
}

pageNum();

document.getElementById('prev').onclick = function() {
    changeImage(-1);
};
document.getElementById('next').onclick = function() {
    changeImage(1);
};

まず、プログラムの冒頭で、配列を定数imagesに代入します。
変数currentに0を代入します。なぜ代入するかというと、今何枚目の画像にいるのかをを保存するために使います。ボタンクリックのときに

呼び出されるchangeImage関数についてみていきます。 ボタンをクリックされたときに渡される値をパラメータとしてnumを渡します。パラメータの名前は自由にセットすることができます。
次のif文では、最初の条件式にcurent + num があります。これは、前の変数currentで0を保存していました。
次へボタンの1がパラメータとして入ってきた場合、0+1で1になります。 &&(かつ) current + numよりもimages.length(データの項目数) &&(かつ)の場合は、どちらか一方でもtrueならプログラムは読み進められます。
読み進められた後の処理は、current += num;▶0+1になります。(a+bしてaに代入)
そして、次の行ではHTMLでid main_imageを設定したので、取得します。document.getElementByIdで取得。.属性(src)= 値、配列imagesのcurrent番目のデータ(images[current])

pageNumの関数処理
id pageを取得します。=の右側のソースは、テンプレート文字列を使用します。
{current + 1}▶現在表示しているページになります。currentには、配列imagesから特定の項目を読み取るために使用していました。
なので、0~4が入るはずですが、感覚的に気持ち悪いので今回は+1にします。{images.length}は画像の点数になります。

それでは、最後の次へクリックされたときの関数です。
HTMLがわでセットしたid属性prev,nextを取得します。
changeImageを呼び出してパラメータとして(-1,+1)をそれぞれパラメータとしてセットします。

出典
https://www.amazon.co.jp/%E7%A2%BA%E3%81%8B%E3%81%AA%E5%8A%9B%E3%81%8C%E8%BA%AB%E3%81%AB%E3%81%A4%E3%81%8FJavaScript%E3%80%8C%E8%B6%85%E3%80%8D%E5%85%A5%E9%96%80-%E7%AC%AC2%E7%89%88-%E7%8B%A9%E9%87%8E-%E7%A5%90%E6%9D%B1/dp/4815601577

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0