Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@akari_0618

スライドショー

今回のスライドショーでは、次へ、前へボタンをクリックせれたら配列に登録されている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
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
akari_0618
最近駆け出したエンジニアなーすです。 初心者のための初心者による初心者に関しての技術ブログになってます。 Twitter(@pro_ai_01)フォローするとモチベが上がり、インスタ(pro_ai)フォローするとこれまたモチベ上がります。Qiitaフォローするとまたモチベも上がり理解も深まります。 人生もプログラミングも一石三鳥ぐらいでいい感じに行きましょ😎

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
0
Help us understand the problem. What is going on with this article?