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

211
Visualizações
Cómo seleccionar varias clases de clase con el mismo nombre en JS

Uso PHP para renderizar dinámicamente estas listas que obtuve de la base de datos, y cada una tiene la misma clase, porque no puedo cambiarla, se renderiza dinámicamente. Selecciono estas clases a través de JavaScript y creo un evento al hacer clic para abrirlas y cerrarlas con la clase oculta.

Ahora tengo un problema, este evento me funciona y reacciona solo para la primera lista renderizada, pero no para las demás. ¿Hay alguna forma de hacer esto? Intenté querySelectorAll y getElementsByClassName y algunos otros selectores, pero nada funcionó. Código PHP:

 <ul class="kartonul"> <?php $user = get_user(); $user_id = $user['id']; $query = "SELECT * FROM karton WHERE id_pacijent = $user_id"; $result = query($query); if($result->num_rows > 0) { while($row = $result->fetch_assoc()) { $karton = get_karton($user_id); foreach($result as $karton) { echo "<li class='likarton'>Karton " .$karton['id']." <i class='fa-solid fa-envelope'></i></li> <div class='kartondiv hiddenRaspored'> <label class='kartonlabel'>Nalaz:</label> <br/> <p>" . $karton['nalaz'] . "</p> <label class='kartonlabel'>Dijagnoza:</label> <br/> <p>" . $karton['dijagnoza'] . "</p> <label class='kartonlabel'>Pregled:</label> <br/> <p>" . $karton['pregled'] . "</p> </div>"; } } } ?> </ul>

Código JavaScript:

 let karton = document.querySelector('.likarton'); let div = document.querySelector('.kartondiv'); karton.addEventListener('click', () => { if (div.classList.contains('hidden')) { div.classList.remove('hidden'); } else { div.classList.add('hidden'); } });

Esta es una plantilla: Plantilla ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Solo está seleccionando la primera instancia de .likarton ; esto se soluciona usando querySelectorAll()


Dado que está utilizando addEventListener , obtiene el elemento exacto en el que se hace clic como argumento en la devolución de llamada.

El javascript correcto para usar esta característica es addEventListener('click', (event) => {})

Y para hacer referencia al elemento en el que se activó el controlador de eventos, puede usar event.currentTarget

Desde ese punto, puede seleccionar el div y usar .classList.* para modificar la lista de clases


ejemplo

 let karton = document.querySelectorAll('.likarton'); for (let i = 0; i < karton.length; i++) { karton[i].addEventListener("click", (event) => { let div = document.querySelector('.kartondiv'); if (div.classList.contains('hidden')) { div.classList.remove('hidden'); } else { div.classList.add('hidden'); } }); }

referencias:

  • https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#the_value_of_this_within_the_handler
  • https://developer.mozilla.org/en-US/docs/Web/API/Element/querySelectorAll#syntax
about 4 years ago · Juan Pablo Isaza Relatório

0

Debe usar querySelectorAll() en lugar de querySelector() .

De esta manera, apuntará a todos los elementos en lugar del primero que coincida. Luego debe recorrer cada uno y agregar un detector de eventos como este:

 let kartons = document.querySelectorAll(".abc"); kartons.forEach(el => { el.addEventListener("click", (event) => { // Something happens on click }) });
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