Cześć,
Jestem początkujący w javascriptcie jak i nowym użytkownikiem forum. Mam problem ze stworzeniem prostej poziomem listy rozwijanej(pewne rzeczy już działają) a konkretnie chcę by np. przy kliknięciu na nagłówek 1 jego lista się rozwinęła, natomiast gdy kliknę w nagłówek 2 to chcę by lista nagłówka 1 się zwinęła a lista nagłówka 2 rozwinęła. W konsoli widzę, że odwołuje się do dobrych elementów do, których chcę dodać klasę "Hide"(klasa zwija daną listę) natomiast nie działa to jak sobie założyłem.
Proszę o pomoc w modyfikacji mojego kodu bądź naprowadzenie mnie jak to zrobić. Poniżej mój kod html i javascript.
<div class="menu-down">
<ul>
<li class="Btns"><a class="Target" href="#cateogry1"> category1</a>
<ul class="ListFormat ListShow Hide">
<li>test1</li>
<li>test2</li>
<li>test3</li>
</ul>
</li>
<li class="Btns"><a class="Target" href="#category2">category2</a>
<ul class="ListFormat ListShow Hide">
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
</li>
</ul>
</div>
const buttons = document.querySelectorAll(".Btns");
buttons.forEach(function (btn) {
const button1 = btn.querySelector(".ListShow");
// const button2 = btn.children[1]
btn.addEventListener("click", function (btnEvent) {
let CurrentButton = btnEvent.currentTarget.children[1];
console.log(button1);
buttons.forEach(function (item) {
console.log(btn.children[1]);
// TO NIE DZIAŁA
if (button1 !== CurrentButton) {
button1.classList.add("Hide")
CurrentButton.classList.remove("Hide")
}
});
// PO KLIKNIĘCIU LISTA SIĘ ROZWIJA PONOWNE KLIKNIĘCIE ZWIJA LISTĘ
let Showbutton = btnEvent.currentTarget.children;
for (i = 0; i < Showbutton.length; i++) {
if (Showbutton[i].classList.contains("ListShow")) {
Showbutton[i].classList.toggle("Hide");
}
}
});
});
//JEŚLI KLIKAMY POZA LISTĄ ROZWIJANĄ LISTA SIĘ ZWIJA
window.addEventListener("click", function (event) {
if (!event.target.matches(".Target")) {
let dropdown = document.getElementsByClassName("ListShow");
for (i = 0; i < dropdown.length; i++) {
let openDropdown = dropdown[i];
if (!openDropdown.classList.contains("Hide")) {
openDropdown.classList.add("Hide");
}
}
}
});