Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

317
Vistas
CSS: error al alternar clases al usar el nombre de la clase

Estoy tratando de alternar clases usando el nombre de la clase. Mi código funciona bien cuando alterno el using id . ¿Cómo puedo hacer que funcione? Solo debe verse un rojo a la vez.

 function hideshowmenu() { var element = document.getElementsByClassName("box"); element.classList.toggle("bg-red"); }
 .bg-red { margin-top: 10px; background-color: red; height: 20px; }
 <div class="mainmenu " onclick="hideshowmenu()">RED1</div> <div id="submenu" class="submenu"> <div class="mainmenu " onclick="hideshowmenu()">RED2</div> <div id="box" class="box"> </div> </div>

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Como sugiere el nombre de getElementsByClassName , devuelve el elemento S , por lo que está obteniendo HTMLCollection, no un elemento. Consulta el primero, así:

 function hideshowmenu() { var element = document.getElementsByClassName("box")[0]; element.classList.toggle("bg-red"); }

o:

 function hideshowmenu() { var elements = document.getElementsByClassName("box"); elements[0].classList.toggle("bg-red"); }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Lo que devuelve document.getElementsByClassName("box"); es una colección. Debe especificar el índice para acceder a la propiedad classList.

Tú lo estás haciendo:

 var element = document.getElementsByClassName("box"); element.classList.toggle("bg-red");

cuando deberías estar haciendo

 var element = document.getElementsByClassName("box"); element[0].classList.toggle("bg-red");

También puede recorrer los elementos si desea alternar varios valores.

Código de ejemplo violín https://jsfiddle.net/agy5jtb0/1/

about 4 years ago · Juan Pablo Isaza Denunciar

0

getElementsByClassName("box") devuelve una colección de elementos, pero lo consideró como un elemento único, ese es su error. Sugiero algo como esto:

html :

 <div class="mainmenu " onclick="hideshowmenu(this)">RED1</div> <div id="submenu" class="submenu"> <div class="mainmenu" onclick="hideshowmenu(this)">RED2</div> <div id="box" class="box"></div> </div>

js :

 function hideshowmenu(el) { el.classList.toggle("bg-red"); }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda