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

151
Visualizações
Cómo eliminar todas las instancias de una clase al agregarla a un nuevo objeto en Javascript

Intentando crear un estado activo en el último botón de la barra de navegación en el que se hizo clic. Actualmente, agregará la clase a cada elemento seleccionado, pero el bucle for...of no parece eliminar la clase.

La barra de navegación se crea dinámicamente con el siguiente código:

 function buildNavBar(){ for (section of sections){ numberOfSection = section.getAttribute('data-nav'); idOfSection = section.getAttribute('id'); navBarList = document.createElement('li'); //Uses template literal strings to present the section names in the nav bar navBarList.innerHTML = `<a class='menu__link' href='#${idOfSection}'>${numberOfSection}</a>`; navBar.appendChild(navBarList); } }
 document.getElementById('navbar__list').addEventListener("click", function(event){ function removeStyle(){ let funcElem_Style = 'funcElemStyle'; let menuLinks = document.querySelectorAll('menu__link') menuLinks = document.getElementsByClassName('funcElemStyle') for(menuLink of menuLinks){ menuLink.classlist.remove('funcElemStyle') } } event.target.classList.add("funcElemStyle"); });
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

No use for...of para iterar sobre HTMLCollections en vivo como lo que devuelve getElementsByClassName . La razón es que en ese ciclo está ejecutando un código que lleva a que el elemento se elimine de la colección en vivo instantáneamente, lo que a su vez para for...of (que internamente funciona basado en índices) significa que el siguiente elemento para iterar sobre en realidad es el elemento que sigue al siguiente, lo que lleva a un bucle que afecta solo a uno de cada dos elementos de la colección.

En su lugar, distribuya el resultado en una matriz e itérelo.

A continuación, estas dos líneas no tienen sentido:

 let menuLinks = document.querySelectorAll('menu__link') menuLinks = document.getElementsByClassName('funcElemStyle')
  1. document.querySelectorAll('menu__link') encontraría elementos <menu_link> (que serían elementos no válidos y su página probablemente no los tenga). Probablemente quiso seleccionar todos los elementos con esa clase CSS de esta manera: document.querySelectorAll('.menu__link') ?

  2. En la siguiente línea, sobrescribe directamente lo que acaba de intentar seleccionar del DOM: menuLinks = document.getElementsByClassName('funcElemStyle') .

  3. Dentro de su función de escucha de eventos anónimos, declara otra función removeStyle() a la que nunca llama.

Dicho esto, esto es probablemente lo que buscas:

 document .getElementById('navbar__list') .addEventListener('click', function(event) { for (const menuLink of [...document.querySelectorAll('.menu__link')]) { menuLink.classlist.toggle('funcElemStyle', event.target === menuLink) } } );
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