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

213
Vistas
Getting the index value of a specific div in a group

I'm creating a group of <div>'s that have separate content:

<div class="container">
  <div class="container__item"></div>
  <div class="container__item"></div>
  <div class="container__item myClass"></div>
</div>

I need to be able to get the specific index value of a <div> when it has a certain class applied to (e.g., myClass)

const item = document.querySelector(".container__item");
const items = document.querySelectorAll(".container__item");
const myClass = document.querySelector(".myClass");

I'm looping through the collection of items but not able to get the index value, e.g., 0, 1, 2. FYI, I'll be converting those values to 1, 2, 3.

for (var i = 0; i < item.length; i++) {
  var hasClass = item[i]classList.contains(showItem);
  if (hasClass) {
    console.log(i);
  }
}
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

You can select the element with the container class and loop over all its children and then grab the index of those children where the className includes myClass.

const container = document.querySelector(".container");

Array.from(container.children).forEach((c, i) => {
  if (c.className.includes("myClass")) {
    console.log(i + 1);
  }
});
<div class="container">
  <div class="container__item"></div>
  <div class="container__item myClass"></div>
  <div class="container__item"></div>
  <div class="container__item myClass"></div>
  <div class="container__item"></div>
  <div class="container__item"></div>
  <div class="container__item myClass"></div>
</div>

You can also do it using Element.classList, as shown below:

const container = document.querySelector(".container");

Array.from(container.children).forEach((c, i) => {
  if (c.classList.contains("myClass")) {
    console.log(i + 1);
  }
});
<div class="container">
  <div class="container__item"></div>
  <div class="container__item myClass"></div>
  <div class="container__item"></div>
  <div class="container__item myClass"></div>
  <div class="container__item"></div>
  <div class="container__item"></div>
  <div class="container__item myClass"></div>
</div>

about 4 years ago · Juan Pablo Isaza Denunciar

0

You can use map and subsequently filter the element list:

const myClassElementsWithIndexes = 
  [...document.querySelectorAll(`.container .container__item`)]
    .map( (item, i) => ({elem: item, index: i}) )
    .filter(item => item.elem.classList.contains(`myClass`) );

console.log(myClassElementsWithIndexes);
<div class="container">
  <div class="container__item"></div>
  <div class="container__item"></div>
  <div class="container__item myClass"></div>
</div>

about 4 years ago · Juan Pablo Isaza Denunciar

0

You're iterating over item instead of items in your for loop. I added some ID's just for debugging to show you. You're also missing a period after the index [i] before accessing classList.

let items = document.querySelectorAll(".container__item");

for ( var i = 0; i < items.length; i++) {
    console.log( items[i].id );
  
  var hasClass = items[i].classList.contains('myClass');
  if (hasClass) {
    console.log('Index: ' + i);
  }
}
<div class="container">
  <div class="container__item" id="div1"></div>
  <div class="container__item" id="div2"></div>
  <div class="container__item myClass" id="div3"></div>
</div>

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