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

204
Visualizações
¿Cómo actualizar la pantalla inmediatamente después de cambiar la fuente de una imagen con Javascript?

Quiero mostrar una nueva imagen en una etiqueta <img> existente. Para lograr esto, estoy actualizando el atributo src a través de Javascript. Sin embargo, después de cambiar el src , la pantalla no cambia para mostrar la carga de la nueva imagen. En su lugar, espera hasta que la nueva imagen se descarga por completo y luego la cambia.

En realidad, estoy configurando la background-image de la etiqueta <img> en la URL de la miniatura de la imagen que se está cargando. El objetivo es tener una imagen de baja calidad que se reemplace gradualmente con la versión de buena calidad. Sin embargo, dado que la nueva imagen no aparece durante la carga, todo lo que obtengo es la foto anterior sentada allí hasta que aparece la nueva de repente.

A continuación se muestra un ejemplo simplificado. Para ver realmente el efecto, abra DevTools > Network y ajuste la aceleración a algo lento. Haga clic en la imagen, luego espere hasta que cambie repentinamente. Esto está sucediendo en Firefox y Chrome, así que supongo que es por diseño.

¿Alguna idea de cómo evitar este comportamiento?

 const images = [ "https://picsum.photos/id/1/200/300", "https://picsum.photos/id/2/200/300", "https://picsum.photos/id/3/200/300", "https://picsum.photos/id/4/200/300", "https://picsum.photos/id/5/200/300" ]; let index = 0; const length = images.length; const img = document.querySelector("img"); document.addEventListener("click", e => { index++; img.src = images[index % length]; });
 <img src = "https://picsum.photos/id/1/200/300" />

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

0

Para hacer que la imagen actual desaparezca mientras se carga la nueva imagen, debe eliminar su atributo src .
Sin embargo, para que su <img> tenga un tamaño, debe configurarlo explícitamente (aquí lo he hecho a través de CSS).

 const images = [ "https://picsum.photos/id/1/200/300", "https://picsum.photos/id/2/200/300", "https://picsum.photos/id/3/200/300", "https://picsum.photos/id/4/200/300", "https://picsum.photos/id/5/200/300" ]; let index = 0; const length = images.length; const img = document.querySelector("img"); document.addEventListener("click", e => { index++; img.removeAttribute("src"); img.src = images[index % length]; });
 img { background: red; width: 200px; height: 300px }
 <img src = "https://picsum.photos/id/1/200/300" />

about 4 years ago · Juan Pablo Isaza Relatório

0

Alternativamente, puede hacer esto:

  • Agregue un texto Loader/Loading para la imagen.
  • Eliminar el atributo de origen al hacer clic en la imagen
  • Muestre el cargador mientras se reemplaza la fuente.

 const images = [ "https://picsum.photos/id/1/200/300", "https://picsum.photos/id/2/200/300", "https://picsum.photos/id/3/200/300", "https://picsum.photos/id/4/200/300", "https://picsum.photos/id/5/200/300" ]; let index = 0; const length = images.length; const img = document.querySelector("img"); const div = document.querySelector("div"); document.addEventListener("click", e => { img.removeAttribute("src"); index++; img.src = images[index % length]; });
 body { margin: 0; } body { margin: 0; } img { position: relative; z-index: 10; } .div { position: absolute; top: 0; z-index: 5; }
 <img src="https://picsum.photos/id/1/200/300" /> <div class="div">Loading...</div>

violín de trabajo

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