前提・実現したいこと
こんにちは、初学者です。
説明が十分でない、何を言っているのか不明でしたら申し訳ありません。
javascriptで画像をクリックすると、クリックした画像が指定の場所に表示されるようなものを作っています。
車のWEBページのような、カスタムオプションを選択すると車に表示されるイメージです。
下記記載のタグで実行はできたのですが、
実際は<div class="hoge-wrapper">内
<a href="#"><img id="btn1" src="images/hoge3.png"></a>の
画像srcが数十あるため、
javascriptで関数として
・クリックされた<a>の<img>srcを取得、取得した<img>srcを指定の場所に表示させる
として、簡略化できると考え実装がしたいです。
発生している問題・エラーメッセージ
javascriptの関数で、 取得して指定の場所に表示させる<img>srcが一つだけなら表示させることができたので、 複数ある場合の書き方を教えていただきたいです。
該当のソースコード
html
1<!-- こちらは上述した実行できる書き方です。 --> 2<!-- HTML1 --> 3<body> 4 <div class="hogespace"> 5 <img id="PhotoSpace" src="images/hoge1.png"> 6 <img id="PhotoSpace2" src="images/hoge2.png"> 7 </div> 8 <div class="hoge-wrapper"> 9 <a href="#"><img id="btn1" src="images/hoge3.png"></a> 10 <a href="#"><img id="btn2" src="images/hoge4.png"></a> 11 </div> 12</body>
javascript
1//こちらは上述した実行できる書き方です。 2//HTML1 の javascript 3document.getElementById("btn1").onclick = function() { 4document.getElementById('PhotoSpace').src = 'images/hoge3.png'; 5} 6document.getElementById("btn2").onclick = function() { 7document.getElementById('PhotoSpace').src = 'images/hoge4.png'; 8}
html
1<!-- こちらは関数で簡略化したいために変更したコードです。 --> 2<!-- HTML2 --> 3<body> 4 <div class="hogespace"> 5 <img id="PhotoSpace" src="images/hoge1.png"> 6 <img id="PhotoSpace2" src="images/hoge2.png"> 7 </div> 8 <div class="watch-wrapper"> 9 <a href="#"><img id="btn" class="hogebtn" onclick="test()" src="images/hoge3.png"></a> 10 <a href="#"><img id="btn" class="hogebtn" onclick="test()" src="images/hoge4.png"></a> 11 </div> 12</body> 13
javascript
1//実現できるであろう考えを調べて書いたコードです。 2//HTML2 の javascript 3const test = ()=> { 4 const img = document.getElementById('btn'); 5 const src = btn.getAttribute('src'); 6 document.getElementById('PhotoSpace').src= btn.src; 7}
試したこと
onclick属性でクリックした際の処理ができることを知った。
getAttribute メソッドを利用して、 src 属性の値を取得できることを知った。
これらを踏まえ、
取得して指定の場所に表示させる<img>srcが一つだけなら表示させることができたので、
複数ある場合の書き方を教えていただきたいです。
document.getElementById() でidを取得するが、idは同じ名前を複数使えない為、ボタンとしている<a>すべてにid="btn"として、クリックされた箇所の<img>srcを取得して表示させる。ということはできないと知った。
document.getElementsByClassName() でclassを取得するが、同じclass名全てを取得する為、ボタンとしている<a>すべてにclass="hogebtn"とすると、どの<img>を押してもすべて取得されると知った。
補足情報(FW/ツールのバージョンなど)
ブラウザはchromeです。
興味を持ち、できた時の喜びがうれしく独学で頑張って調べていますが、どのように調べればよいかわかりませんでした。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/27 02:35
2020/09/27 03:31
2020/09/27 07:12
2020/09/27 07:15
2020/09/27 09:53
2020/09/27 09:59
2020/09/27 14:00