JavaScript DOM入門

  • イベント処理

  • フォトギャラリーを作る

イベントとは

ボタンがクリックされる、キーが押されるなど

イベントハンドラとは

イベントに対して行う処理のこと

イベントリスナ

イベントとイベントハンドラを紐づけているもの

イベントリスナの構文

要素オブジェクト.addEventListener(イベントの種類, (e)  => {
イベント処理
}, false);
イベント処理の部分は関数として外に出すこともできる
(例)

const sayHelloButton = document.getElementById('sayHelloButton');

function sayHelloEventHandler(e) {
    console.log('Hello');
};

sayHelloButton.addEventListener('click', sayHelloEventHandler, false);

イベントリスナーを削除

sayHelloButton.removeEventListener('click',sayHelloEventHandler, false);

イベント処理を利用してフォトギャラリーを作る

imgタグに入れる用のsrcとalt属性の入った配列を用意する↓

const images = [
    {src: 'https://hoge1.jpg', alt: 'パッチの画像'},
    {src: 'https://hoge2.jpg', alt: '犬の画像'},
    {src: 'https://hoge3.jpg', alt: '熊の画像'},
    {src: 'https://hoge4.jpg', alt: 'ゴリラの画像'},
    {src: 'https://hoge5.jpg', alt: '山の画像'}
  ];

<img>を作って最初に表示する画像を設定する

let image = document.createElement('img');
image.setAttribute('src', images[0].src);
image.setAttribute('alt', images[0].alt);

html側で親要素を用意する↓小要素の<img>はwidthを小さくする

<div id="main_image"></div>
<div id="thumbnails"></div>

小要素を設定する↓サムネの方はimages配列の要素の数だけ小要素を作成する↓

let mainImage = document.getElementById('main_image');
mainImage.insertBefore(image, null)

let thumbnails = document.getElementById('thumbnails');
for (let i = 0; i < images.length; i++){
    let thumbnailImage = document.createElement('img');
    thumbnailImage.setAttribute('src', images[i].src);
    thumbnailImage.setAttribute('alt', images[i].alt);
    thumbnails.insertBefore(thumbnailImage, null);
  }

サムネをクリックした時のイベントハンドラを設定する↓

thumbnails.addEventListener('click', (e)=>{
    if (e.target.src){
      image.src = e.target.src;
    }
  });

e.target.srcを使うことで画像がクリックされた時のみ実行する

この記事が気に入ったらサポートをしてみませんか?