Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

255
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!