2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

47日目。クリックでずらっと並んだ画像を個別に切り替えたい

Last updated at Posted at 2019-07-18

目標はカタログの画像をクリックしたら正面、横、上と画像が切り替わる感じのページです。

まずは「画像 クリック 切り替え」で検索してみました。

1.【JavaScript入門】すぐわかる!画像を切り替える方法
コードをコピペして、クリックで画像が切り替わるところまではすぐできました。しかし複数の画像を用意、これをクリックすると他の画像も一緒に切り替わってしまいます。

2.商品詳細ページのように、サムネイル画像をクリックしたらメイン画像が変わる画像ビューアーをjQueryで作ってみた
JQueryが使えたら良さそうですが、今回は使えないので見送り。

3.クリックで切替
これは良さそう。ボタンが画像ごとに3つ必要でデザイン的にいまいちだけど、やりたい事はできました。ひとつにまとめられたらいいのだけど。

4.一枚ずつ画像を切り換える
これだと切り替える画像がたくさんあっても大丈夫そう。しかし1つなら動くのに、複数になると動かない。なんでだろう。

5.クリックで複数画像の画像を個別に切り替える
なるほど、複数画像にそれぞれ個別のタグをつければよさそうです!

test.js
function changeT(iName)
{
    iObj = document.images[iName];
    n    = iObj.src.lastIndexOf("/") + 1;
    iSrc = iObj.src.substring(n,iObj.src.length);
    imgA = 'ari.gif'
    imgB = 'osusume.gif'
    imgC = 'urikire.gif'
    if (iSrc == imgA) iObj.src = imgB; 
    else if (iSrc == imgB) iObj.src = imgC; 
    else iObj.src = imgA;
}

const Targets = [
    ["たまご", 100],
    ["サーモン", 100],
    ["いくら", 300],
    ["あじ", 100],
    ["いわし", 100],
    ["さば",  100],
    ["中トロ", 200],
    ["大トロ", 300],
    ["気まぐれにぎり",300]
]

let str = "";
for (i=0; i<Targets.length; i++ ){
    Target = Targets[i]
    str = str  + `<div class='contents'>`;
    str = str  + `<div class='menu'>${Target[0]}</div>`;
    str = str  + `<div class='price'>¥${Target[1]}円</div>`;
    str = str  + `<img class='ita' src="ari.gif" name="ita${i}" onClick="changeT('ita${i}')">`;
    str = str  + `</div>`
}

const firstscript = function() { 
   document.getElementById('main').innerHTML = str;
   };

window.addEventListener("DOMContentLoaded", firstscript);

画像のnameを個別にするのがキモでした!
これに気がつくのに4時間かかったんですね。ふう。

所要時間

1.Javascriptで画像切り替え 2時間
2.その他 1時間
3.複数画像の画像クリックで個別切り替え 1時間
画像を2つから3つ対応にする 30分
日本語ファイル名で動かなかった 30分
4.html,cssコーディング 1時間

2
3
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
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?