Ok, tal vez el título está redactado un poco mal...
Tengo un javascript que se supone que abre mi barra lateral una vez que se hace clic en el botón, pero se necesitan dos clics para abrir la barra lateral y otros dos clics para cerrarla.
Entiendo por qué sucede esto a través de mi Javascript, pero no estoy seguro del remedio (¿No estoy seguro si en realidad es un problema de Blazor?)
JavaScript
function LoadContent() { document.addEventListener("DOMContentLoaded", document.onclick = function(event) { const showNavbar = (toggleId, navId, pId, headerId) => { const toggle = document.getElementById(toggleId), nav = document.getElementById(navId), bodypd = document.getElementById(pId), headerpd = document.getElementById(headerId); mainbodypd = document.getElementById("mainbody"); if (toggle && nav && bodypd && headerpd && mainbodypd) { toggle.addEventListener("click", () => { nav.classList.toggle("show"); toggle.classList.toggle("bx-x"); bodypd.classList.toggle("body-pd"); headerpd.classList.toggle("body-pd"); mainbodypd.classList.toggle("height-100short"); }); } }; showNavbar("header-toggle", "nav-bar", "body-pd", "header"); const linkColor = document.querySelectorAll(".nav_link"); function colorLink() { if (linkColor) { linkColor.forEach(l => l.classList.remove("active")); this.classList.add("active"); } } linkColor.forEach(l => l.addEventListener("click", colorLink)); }); }¿Alguien puede explicar cómo puedo evitar que esto suceda? (Lo siento, soy bastante nuevo en JS)
Entonces, ¿por qué estás haciendo:
document.onclick = function(event) {Esto hace que la función active cada clic de página EN CUALQUIER LUGAR de la página (lo que significa que sigue agregando detectores de eventos cada vez que hace clic).
Probablemente deberías eliminar esa parte, o si la necesitas para algo, quita la sección de la barra mostrada y guárdala en DOMContentLoaded.