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

257
Visualizações
How to check if an element classList contains a string or word partially?

I've got this code:

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>

and I was wondering if theres to use classList.contains with a string/word partially?

Obviously what I'm trying to achieve is to get fruits-green styled too, since it contains fruits-green

I know there are CSS selectors for that, but given that my fruits variable will change with other JS functions, I'd like this to be vanilla JS too.

Any advice is much appreciated. Thanks!

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

0

I was able to make it work using

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>

Thanks again @David

about 4 years ago · Santiago Gelvez Relatório

0

The classList property is a DOMTokenList which is a string but has methods and properties simular to Array methods.

  • Iterate through the array of tags (all). We'll use .flatMap() because we are dealing with multiple tags that may or may not have multiple matches.
    all.flatMap((div, idx) => {//...
    
  • Next, we'll use the .value property of classList which returns a space delimited string of each of the tag's classes.
    let list = div.classList.value.split(' ');
    
  • Then we'll .filter() each class of each tag by comparing with .includes()
    list.filter(cls => cls.toLowerCase().includes('fruit'));
    
  • Finally, an array of arrays is returned. Each sub-array contains a tag's matching classes.
    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