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

174
Vistas
Cómo agregar varias tarjetas haciendo clic en el resultado de búsqueda

Mi secuencia de comandos actual le permite agregar una tarjeta + algo de información sobre su contenido haciendo clic en el resultado de una barra de búsqueda.

El objetivo es crear una especie de lista de películas. Sin embargo, no sé cómo, dónde o si debo implementar un bucle para agregar varias tarjetas, en lugar de reemplazar una.

Mi mayor problema es que después de hacer clic en el elemento de resultado, la tarjeta activa se reemplaza por la nueva.

La primera función carga el contenido basado en una API. Básicamente borra la barra de búsqueda después de hacer clic en el elemento que se muestra a través de la investigación. También llama a la función encargada de agregar un div (una tarjeta con la información de la película) al HTML.

 function loadContentDetails(){ const searchListContent = searchList.querySelectorAll('.search-list-item'); searchListContent.forEach(content => { content.addEventListener('click', async () =>{ searchList.classList.add('hide-search-list'); searchBar.value = ""; const result = await fetch(`http://www.omdbapi.com/?i=${content.dataset.id}&apikey=60ee3e91`); const contentDetails = await result.json(); displayContentDetails(contentDetails); }); });}

La segunda función crea una nueva tarjeta basada en lo que el usuario seleccionó a través de la barra de búsqueda.

 function displayContentDetails(details){ cardsGroupFlex.innerHTML = ` <div class="card"> <img src="${(details.Poster != "N/A") ? details.Poster: "resources/img-not-found.png"}" alt="" class="card-img" /> <div class="card-description"> <p class="card-title">${details.Title}</p> <p> ${(details.Plot)} </p> </div> </div> `; }

Agradecería mucho su ayuda.

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Cambie cardsGroupFlex.innerHTML = a cardsGroupFlex.innerHTML += (agregue un signo "+" antes de "="). Esto concatenará una nueva tarjeta con el HTML interno en lugar de reemplazar el HTML interno con la nueva tarjeta:

 cardsGroupFlex.innerHTML += ` <div class="card"> <img src="${(details.Poster != "N/A") ? details.Poster: "resources/img-not-found.png"}" alt="" class="card-img" /> <div class="card-description"> <p class="card-title">${details.Title}</p> <p> ${(details.Plot)} </p> </div> </div> `;
about 4 years ago · Juan Pablo Isaza Denunciar

0

Una solución simple es que, en lugar de configurar el cardsGroupFlex innerHTML puede agregar la tarjeta al final del innerHTML interno.

 // instead of cardsGroupFlex.innerHTML = `...` // appending with += cardsGroupFlex.innerHTML += `...`

Sin embargo, si va a implementar una función como eliminar o editar las tarjetas, necesitará tener una matriz global de los detalles de la tarjeta y recorrerlos todos dentro de displayContentDetails .

Esta solución también podría hacer uso de la adición al final de una cadena.

 function displayContentDetails(){ let newInner = '' for (const details of globalCards) { inner += ` <div class="card"> <img src="${(details.Poster != "N/A") ? details.Poster: "resources/img-not-found.png"}" alt="" class="card-img" /> <div class="card-description"> <p class="card-title">${details.Title}</p> <p> ${(details.Plot)} </p> </div> </div> ` } }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Una nota rápida: no use searchList.classList.add como función/método. es una propiedad Entonces haga lo siguiente para agregar clases.

 searchList.classList.add = 'hide-search-list';

Esto es solo de una observación rápida en su código.

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