Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

218
Visualizações
Visualización de elementos de alternancia de Javascript

Tengo un sitio web con un elemento de menú en una cuadrícula de encabezado y cuando la página se muestra por primera vez, el menú está visible. Tengo un elemento de hamburguesa que quiero usar para alternar la visualización del menú cuando se hace clic en él.

El CSS para el menú es:

 /*==================================================================*/ /* NAVIGATION */ .main-nav { grid-area: N; text-transform: uppercase; } /* Style the nav links */ .main-nav ul { display: grid; grid-template-columns: repeat(4,20vw); } .main-nav li { /* No bullets */ text-align: center; list-style-type: none; min-width: 20vw; } .main-nav a { /* Not italic unlike all other a elements */ text-decoration: none; font-style: normal; }

La hamburguesa usa una función javascript:

 /* Toggle between showing and hiding the navigation menu links when the user clicks on the hamburger menu / bar icon */ function toggleMenu() { let menu = document.getElementById("main-nav"); if (menu.display == "none"){ alert("Hidden"); menu.style.display = "grid"; } else { alert("Displayed"); menu.style.display = "none"; } };

Cuando se carga la página, esta función se usa en el detector de eventos de clic de la hamburguesa:

 document.getElementById("hamburger").addEventListener("click", toggleMenu);

Ahora, lo que sucede es esto: la página se carga, el menú está visible:

Página cuando se carga primero

Hago clic en la hamburguesa, la alerta me dice que el menú está actualmente visible:

Alerta que se muestra

Entonces el menú está oculto:

Página con menú oculto

Sin embargo, si ahora vuelvo a hacer clic en la hamburguesa, aparece un mensaje que me dice que se muestra el menú (!) y no vuelve a aparecer:

Menú aparentemente mostrado pero no visible

Entonces, lo que no entiendo es por qué el estilo del elemento. el estado de visualización es incorrecto cuando el menú muestra claramente: ninguno;?

Por supuesto, esto significa que la función no vuelve a mostrar el menú porque la verificación de estado es incorrecta.

Si necesita más código, hágamelo saber, pero por lo que puedo ver, todo el código involucrado está en la pregunta.

Gracias por adelantado,

Dermot

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Al final, fue un simple error dejar de lado .style según el comentario de Simon K:

 if (menu.style.display == "none"){ alert("Hidden"); menu.style.display = "grid"; } else { alert("Displayed"); menu.style.display = "none"; }

¡La verificación de meun.display no hizo nada ya que no había nada que verificar!

¡Muchas gracias a Simon K por descubrirlo!

about 4 years ago · Juan Pablo Isaza Relatório

0

¡Prueba esto en su lugar!

 function toggleMenu() { let menu = document.getElementById("main-nav"); if (window.getComputedStyle(menu).display == "none") { alert("Hidden"); menu.style.display = "grid"; } else if (window.getComputedStyle(menu).display == "grid") { alert("Displayed"); menu.style.display = "none"; } }
 .main-nav { grid-area: N; text-transform: uppercase; } /* Style the nav links */ .main-nav ul { display: grid; grid-template-columns: repeat(4,20vw); } .main-nav li { /* No bullets */ text-align: center; list-style-type: none; min-width: 20vw; } .main-nav a { /* Not italic unlike all other a elements */ text-decoration: none; font-style: normal; }
 <div class="main-nav"> <ul id="main-nav"> <li><a class="hoverlink activemenu" href="index.html">home</a></li> <li><a class="hoverlink" href="shop.html">shop</a></li> <li><a class="hoverlink" href="notes.html">notes</a></li> <li><a class="hoverlink" href="info.html">info</a></li> </ul> <button onClick="toggleMenu()">☰</button> </div>

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda