お願い、バニラJSのヒントを教えてください。バニラのドロップダウンメニューJavaScript - 不明な数のボタンについて
私はボタンのクリックを経由して、ドロップダウンメニューの開口部を持っており、2つの問題があります。
1)をドロップダウンには、一意のIDを持つボタンをクリックして開いています。 - 複数のボタンで作業する必要があるため、クラス名にはが必要です。その数は不明です(REST APIからロードされます)。 jQueryでは動作していますが、バニラJSで必要です。
クラス名でボタンを選択しようとすると、ボタンの配列が返されますが、どのボタンをクリックしたかはわかりません。
2)ドロップダウンメニューは、ボタンの2回目のクリックでのみ開くようになりますが、最初のクリックは何もしません。
私のコードはここにある: https://codepen.io/vlastapolach/pen/EXdLMy
してください、あなたはこの問題を解決する方法任意のアイデアを持っています:
// select Button - now by ID - but I need unknown number of buttons - from REST API - and the code working for all of them
var btn = document.getElementById("dropBtn1");
// select Dropdown menu - next to the button - to be sure it will open the right menu no matter which button will be pressed
var menu = btn.nextSibling;
while(menu && menu.nodeType != 1) {
menu = menu.nextSibling
}
//toggle dropdown menu open/close
btn.addEventListener("click", function() {
if (menu.style.display == 'none') {
menu.style.display = 'block';
}
else {
menu.style.display = 'none';
}
});
とワーキングプロトタイプはCodepenにここにいるのですか?
ありがとうございました!
あなたのコードはmenu.style.displayを期待しているのに対し、クリックハンドラがmenu.style.displayを実行する最初の時間は、空であります== 'none'ので、ブロックを表示に変更することができます – derloopkat
ありがとうございます、あなたは正しいです。それは今ジョナスに従って解決されています - = 'none'をチェックしないでください!= 'block' –