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

252
Visualizações
¿Cómo verificar si un elemento classList contiene una cadena o palabra parcialmente?

Tengo este código:

 const all = document.querySelectorAll('div'); let variable = 'fruits'; all.forEach((item) => { if(item.classList.contains(variable)) { item.style.backgroundColor = 'red'; } });
 <div class="fruits"> Fruits </div> <div class="fruits-green"> Green fruits </div>

y me preguntaba si hay que usar classList.contains con una cadena/palabra parcialmente.

Obviamente, lo que estoy tratando de lograr es obtener un estilo de frutas verdes también, ya que contiene frutas -verdes

Sé que hay selectores de CSS para eso, pero dado que mi variable de frutas cambiará con otras funciones de JS, me gustaría que esto también sea Vanilla JS.

Cualquier consejo es muy apreciado. ¡Gracias!

about 4 years ago · Santiago Gelvez
2 Respostas
Responde à pergunta

0

Pude hacerlo funcionar usando

 let variable = 'fruits'; const all = document.querySelectorAll('div[class*="'+variable+'"]'); all.forEach((item) => { item.style.backgroundColor = 'red'; });
 <div class="fruits"> Fruits </div> <div class="fruits-green"> Green fruits </div>

Gracias de nuevo @David

about 4 years ago · Santiago Gelvez Relatório

0

La propiedad classList es una DOMTokenList que es una cadena pero tiene métodos y propiedades similares a los métodos Array.

  • Iterar a través de la matriz de etiquetas ( all ). Usaremos .flatMap() porque estamos tratando con múltiples etiquetas que pueden o no tener múltiples coincidencias.
     all.flatMap((div, idx) => {//...
  • A continuación, usaremos la propiedad .value de classList que devuelve una cadena delimitada por espacios de cada una de las clases de la etiqueta.
     let list = div.classList.value.split(' ');
  • Luego, .filter() cada clase de cada etiqueta comparándola con .includes()
     list.filter(cls => cls.toLowerCase().includes('fruit'));
  • Finalmente, se devuelve una matriz de matrices. Cada subarreglo contiene las clases coincidentes de una etiqueta.
     const all = Array.from(document.querySelectorAll('div')); let output = all.flatMap((div, idx) => { let list = div.classList.value.split(' '); console.log(list) let matches = list.filter(cls => cls.toLowerCase().includes('fruit')); return [matches]; }) console.log(output);
     <div class="fruits fries"> Fruits fries </div> <div class="fruits-green fruity"> Green fruits fruit </div>
about 4 years ago · Santiago Gelvez 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