質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

406閲覧

表示切り替えボタンの表示対象を複数設定する方法

_Lucia

総合スコア25

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2022/05/25 08:35

javascriptコードは以下のサイトからコピぺしています。
https://blog-and-destroy.com/24218

ページ内にボタン切り替えコンテンツを作りたいのですが、上記の参考サイトのコードは1つのボタンにつき1つの要素内しか切り替えができません。

他の要素内の内容も連動して切り替えを行うにはどうすればよいでしょうか?

html

1<!DOCTYPE html> 2<html> 3 <head> 4 <script> 5 document.addEventListener('DOMContentLoaded', function(){ 6 const tabs = document.getElementsByClassName('tab'); 7 for(let i = 0; i < tabs.length; i++) { 8 tabs[i].addEventListener('click', tabSwitch, false); 9 } 10 function tabSwitch(){ 11 document.getElementsByClassName('is-active')[0].classList.remove('is-active'); 12 this.classList.add('is-active'); 13 document.getElementsByClassName('is-show')[0].classList.remove('is-show'); 14 const arrayTabs = Array.prototype.slice.call(tabs); 15 const index = arrayTabs.indexOf(this); 16 document.getElementsByClassName('panel')[index].classList.add('is-show'); 17 }; 18 }, false); 19 </script> 20 <style> 21 .tab{ 22 cursor:pointer; 23 } 24 .panel{ 25 display:none; 26 } 27 .panel.is-show{ 28 display:block; 29 } 30 </style> 31 </head> 32 <body> 33 <ul class="tab-group"> 34 <li class="tab tab-A is-active">ボタンA</li> 35 <li class="tab tab-B">ボタンB</li> 36 <li class="tab tab-C">ボタンC</li> 37 </ul> 38 39 A、B、Cの表示場所↓ 40 <div class="panel tab-A is-show">Aを表示。</div> 41 <div class="panel tab-B">Bを表示。</div> 42 <div class="panel tab-C">Cを表示。</div> 43 44 45 A2、B2、C2の表示場所↓ 46 <div class="tab-A2">Aがいるときだけ表示されたいA2を表示。</div> 47 <div class="tab-B2">Bがいるときだけ表示されたいB2を表示。</div> 48 <div class="tab-C2">Cがいるときだけ表示されたいC2を表示。</div> 49 <body> 50</html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

いくつかやりようはありそうですがこんな感じで?

javascript

1<script> 2document.addEventListener('click',e=>{ 3 const t=e.target; 4 if(t.matches('[data-target]')){ 5 document.querySelectorAll(t.dataset.target).forEach(x=>x.classList.remove('is-show')); 6 document.querySelectorAll(t.dataset.show).forEach(x=>x.classList.add('is-show')); 7 } 8}); 9</script> 10<style> 11.panel:not(.is-show), 12.panel2:not(.is-show){ 13display:none; 14} 15</style> 16<ul class="tab-group"> 17<li class="tab is-active" data-show=".tab-A,.tab-A2" data-target=".panel,.panel2">ボタンA</li> 18<li class="tab" data-show=".tab-B,.tab-B2" data-target=".panel,.panel2">ボタンB</li> 19<li class="tab" data-show=".tab-C,.tab-C2" data-target=".panel,.panel2">ボタンC</li> 20</ul> 21 22<div class="panel tab-A is-show">Aを表示。</div> 23<div class="panel tab-B">Bを表示。</div> 24<div class="panel tab-C">Cを表示。</div> 25 26 27<hr> 28<div class="panel2 tab-A2 is-show">Aがいるときだけ表示されたいA2を表示。</div> 29<div class="panel2 tab-B2">Bがいるときだけ表示されたいB2を表示。</div> 30<div class="panel2 tab-C2">Cがいるときだけ表示されたいC2を表示。</div>

投稿2022/05/25 10:07

yambejp

総合スコア114843

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

_Lucia

2022/05/25 12:51

本当にありがとうございます! おかげで実装できました! ありがたく使わせていただきます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問