¿Cómo desplegar el submenú uno a uno?
En la barra de navegación, el nombre de clase del submenú es “submenu”, tenemos 7 submenús. Estoy tratando de hacer algo similar a un “mouse hover”, pero sin usar eventos del mouse. Quiero mostrarlos uno por uno (mostrar el primero y ocultarlo, mostrar el segundo y ocultarlo), ¿cuál es la mejor manera de hacerlo con JavaScript?
Aquí está mi código, pero los muestra uno encima del otro:
function changestyle(){
var els = document.getElementsByClassName("submenu");
for(var i = 0; i < els.length-1; i++)
{
els[i].style.display = 'block';
}
}
Intenté otro código, pero no funciona:
function changestyle(){
var els = document.getElementsByClassName("submenu");
for(var i = 0; i < els.length-1; i++)
{
const showone = function(){
els[i].style.display = 'block';
};
const hideone = function(){
els[i].style.display = 'none';
};
setTimeout(showone, 2000);
setTimeout(hideone, 2000);
}
}
Este es el código HTML para el submenú:
<div class="submenu">
<ul class="linkmenu">
<li class="d-md-none">
<div class="nav-item standalone-nav"><span><a href="/wines/_/N-n" data-nav-label="Browse all Offers"><strong>Browse all Offers</strong></a></span></div>
</li>
<li>
<div class="nav-item"><span>Type</span><i class="arrow down"></i></div>
...
</li>
</ul>
</div>
davy.ai
Para mostrar y ocultar los submenús uno por uno, puedes utilizar una combinación de las funciones setInterval y setTimeout en JavaScript. Aquí tienes un ejemplo de código que debería funcionar:
Este código utiliza setInterval para ejecutar repetidamente una función que muestra y oculta los submenús. El submenú actual se muestra utilizando
submenus[i].style.display = "block"
, y luego se oculta después de 2 segundos utilizandosetTimeout
. La variablei
lleva un seguimiento de qué submenú se está mostrando y ocultando actualmente, y la variableintervalId
se utiliza para detener el intervalo cuando se han mostrado y ocultado todos los submenús. Puedes llamar a esta función en respuesta a un evento del usuario, como hacer clic en la barra de navegación.