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

230
Visualizações
¿Cómo usar JS para obtener la altura de HTML img y establecerla como una variable?

En el siguiente fragmento, intento obtener la altura de cualquier imagen anidada dentro de una clase en particular. Una vez que se recopila la altura de la imagen, necesito almacenarla en una variable para usarla en otro lugar.

Los dos problemas que me encuentro son:

  1. La segunda imagen regresa como 0px
  2. Almacenar el resultado de la altura de la imagen dinámica como una variable

 let getImgHeight = (()=> { let images = document.querySelectorAll('.wistia img'); images.forEach(image => console.log(`${image.clientHeight}px`)); })();
 <div class="wistia"> <img src="https://media.moddb.com/images/members/5/4550/4549205/duck.jpg" alt=""> <img src="https://www.thedesignwork.com/wp-content/uploads/2011/10/Random-Pictures-of-Conceptual-and-Creative-Ideas-02.jpg" alt=""> </div>

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

0

Obtiene cero porque verifica la altura de la imagen antes de cargarla. Puede verificarlo fácilmente si envuelve su función en un tiempo de espera prolongado.

El mejor enfoque es esperar a que se carguen todas las imágenes (ignorando las que ya están cargadas) y luego obtener su altura. Aquí hay un ejemplo a continuación:

 let getImgHeight = (()=> { let images = document.querySelectorAll('.wistia img'); Promise.all(Array.from(images) .filter(img => !img.complete) .map(img => new Promise(resolve => { img.onload = img.onerror = resolve; }) ) ).then(() => { images.forEach(image => console.log(`${image.clientHeight}px`)); }); })();
 <div class="wistia"> <img src="https://media.moddb.com/images/members/5/4550/4549205/duck.jpg" alt=""> <img src="https://www.thedesignwork.com/wp-content/uploads/2011/10/Random-Pictures-of-Conceptual-and-Creative-Ideas-02.jpg" alt=""> </div>

ACTUALIZAR 1 Todo el tiempo que quieras

para establecer la altura del contenedor principal

Sugeriría reescribir su código de la siguiente manera:

 const images = document.querySelectorAll('.wistia img'); for (const image of Array.from(images)) { if (image.complete) { image.parentElement.style.height = image.clientHeight + 'px'; } else { image.onload = () => { image.parentElement.style.height = image.clientHeight + 'px'; } } }
 <div class="wistia"> <img src="https://media.moddb.com/images/members/5/4550/4549205/duck.jpg" alt=""> </div>

about 4 years ago · Juan Pablo Isaza Relatório

0

Lo más probable es que esté tratando de obtener la altura de una imagen que no ha terminado de cargarse. La mejor manera de lidiar con eso es usar el detector de eventos de load . Luego puede almacenar la altura como un data-attribute que es una forma de convertirla en una variable dinámica.

 document.addEventListener('DOMContentLoaded', () => { let images = document.querySelectorAll('.wistia img'); images.forEach(image => { image.addEventListener('load', e => { e.target.setAttribute('data-height', `${image.clientHeight}px`) console.log(`${e.target.clientHeight}px`); if (document.querySelectorAll('.wistia img[data-height]').length === images.length) { console.log("ALL IMAGES LOADED"); } }); }); });
 <div class="wistia"> <img src="https://media.moddb.com/images/members/5/4550/4549205/duck.jpg" alt=""> <img src="https://www.thedesignwork.com/wp-content/uploads/2011/10/Random-Pictures-of-Conceptual-and-Creative-Ideas-02.jpg" alt=""> </div>

about 4 years ago · Juan Pablo Isaza Relatório

0

Probé tu código en JSFiddle y funcionó como se esperaba. Compruebe la versión de jQuery que está utilizando.

Aquí hay una captura de pantalla de JSFiddle

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