es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tratando de obtener una imagen a la vez

He creado una función para crear una imagen de un oso, pero solo quiero una imagen a la vez. Hay un botón que está restableciendo la otra API que tengo, pero no esta. ¿Alguna ayuda o sugerencia?

const numImagesAvailable = 145 //cuántas fotos hay en total en la colección
const numItemsToGenerate = 1; //cuántas fotos quieres mostrar
const imageWidth = 360; //ancho de la imagen en píxeles
const imageHeight = 360; //alto de la imagen en píxeles
const collectionID = 9396519 //Osos, el ID de la colección de la URL original
const galleryContainer = document.querySelector('#gallery-item')

function renderGalleryItem(randomNumber) {
  fetch(`https://source.unsplash.com/collection/${collectionID}/${imageWidth}x${imageHeight}/?sig=${randomNumber}`).then(function(response) {
    console.log(response)
    let galleryItem = document.createElement('img');
    galleryItem.className = "center-bear";
    galleryItem.setAttribute("src", `${response.url}`)
    document.body.append(galleryItem)
  })
}

for (let i = 0; i < numItemsToGenerate; i++) {

}

buttonEl.addEventListener("click", function(event) {
  event.preventDefault();
  listItemEl.remove();
  callapi();
  let randomImageIndex = Math.floor(Math.random() * numImagesAvailable);
  renderGalleryItem(randomImageIndex);
});
<div id="gallery-item"></div>
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema es que la función renderGalleryItem se ejecuta cada vez que se hace clic en el botón, pero no está restableciendo la imagen anterior antes de mostrar una nueva. Una solución podría ser borrar el contenido de galleryContainer antes de agregar la nueva imagen:

    function renderGalleryItem(randomNumber) {
      fetch(`https://source.unsplash.com/collection/${collectionID}/${imageWidth}x${imageHeight}/?sig=${randomNumber}`).then(function(response) {
        console.log(response)
        let galleryItem = document.createElement('img');
        galleryItem.className = "center-bear";
        galleryItem.setAttribute("src", `${response.url}`)
        galleryContainer.innerHTML = ''; // borrar imagen anterior
        galleryContainer.append(galleryItem); // agregar nueva imagen
      })
    }
    

    Esto asegurará que solo se muestre una imagen a la vez.

Comments are closed.