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

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

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

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

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

Q&A

1回答

666閲覧

button押下で同列のドロップダウンリストを開いた状態にしたい【javascript】【bootstrap】

kihokutarou

総合スコア59

JavaScript

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

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

0グッド

0クリップ

投稿2022/02/24 06:12

編集2022/02/24 06:28

HTML上のテーブルの1行に左端にボタンがあり、これを押すことで右方向にあるドロップダウンリストを開いた状態にしたいと思います。何行もあり、forで回しての処理中の話となります。

html

1<td class="align-middle"><button class="btn btn-light" value="1" onclick="sentaku(this)">ア行</button></td> 2<td class="align-middle"> 3 <div class="dropdown"> 4 <button class="btn btn-secondary dropdown-toggle" id="gender" type="button" data-toggle="dropdown"> 5 異常なし 6 </button> 7 <div class="dropdown-menu"> 8 <button class="dropdown-item" value="">あいうえお</button> 9 <button class="dropdown-item" value="">かきくけこ</button> 10 <button class="dropdown-item" value="">さしすせそ</button> 11 12 </div> 13 </div> 14 </td>

bootstrapのクラスでshowを追加で表示自体はされるのですが、選択肢を押した後リストが表示され続けて消えてくれません。

javascript

1function sentaku(obj){ 2 console.log(obj.closest('tr')); 3 let DropMenu = obj.closest('tr').querySelector('.dropdown'); 4 DropMenu.classList.add('show'); 5 let DropMenu1 = obj.closest('tr').querySelector('.dropdown-menu'); 6 DropMenu1.classList.add('show'); 7 }

aria-expanded="false"の項目もtrueにしようとしたのですがよくわからないエラーが出て困っています。
考え方に間違えがあるのか、正しいやり方はどんなものがあるか教えてもらえないでしょうか。

加筆します。
id="gender"のbuttonを押下することで<div class="dropdown"><div class="dropdown-menu">のクラスにshowが付き、<div class="dropdown-menu">内の項目が表示されます。これを選択することでid="gender"のbuttonの文字列が選択した文字列に置き換えられます。
これ自体はbootstrapの参考記述をまねて書きましたので、細かく説明ができません、申し訳ありません。

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

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

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

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

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

yambejp

2022/02/24 06:23

ドロップダウンリストとは「.dropdown-menu」の要素のことでしょうか? divなので開いた状態というのがよくわかりませんが、説明してもらえますか?
m.ts10806

2022/02/24 07:11

>bootstrapの参考記述をまねて書きましたので 参考先URL提示してください。 大抵のことは自前でしなくても機能でなんとかできるはずなので
guest

回答1

0

こういうことでしょうか?(相対位置を利用しているのでHTMLの構造が違うなら動かないですが)

javascript

1<style> 2.dropdown-menu{ 3display:flex; 4flex-direction:column; 5width:100px; 6} 7.dropdown-menu:not(.show){ 8display:none; 9} 10.dropdown-item{ 11width:auto; 12} 13</style> 14<script> 15document.addEventListener('click',e=>{ 16 const t=e.target; 17 if(t.closest('.dropdown-toggle')){ 18 t.nextElementSibling.classList.add('show'); 19 } 20 if(t.closest('.dropdown-item')){ 21 t.closest('.dropdown-menu').previousElementSibling.textContent=t.textContent; 22 t.closest('.dropdown-menu').classList.remove('show'); 23 } 24}) 25</script> 26<div class="dropdown"> 27<button class="btn btn-secondary dropdown-toggle" type="button" data-toggle="dropdown"> 28異常なし 29</button> 30<div class="dropdown-menu"> 31<button class="dropdown-item" value="">あいうえお</button> 32<button class="dropdown-item" value="">かきくけこ</button> 33<button class="dropdown-item" value="">さしすせそ</button> 34</div> 35</div> 36<div class="dropdown"> 37<button class="btn btn-secondary dropdown-toggle" type="button" data-toggle="dropdown"> 38異常なし 39</button> 40<div class="dropdown-menu"> 41<button class="dropdown-item" value="">あいうえお</button> 42<button class="dropdown-item" value="">かきくけこ</button> 43<button class="dropdown-item" value="">さしすせそ</button> 44</div> 45</div>

投稿2022/02/24 06:40

yambejp

総合スコア114883

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問