Это должно быть легко, но это не так. Мне просто нужна высота изображения:Получить высоту изображения
<div id="map">
<img src="myimage.jpg">
</div>
$("#map img").height(); // returns 0
Это должно быть легко, но это не так. Мне просто нужна высота изображения:Получить высоту изображения
<div id="map">
<img src="myimage.jpg">
</div>
$("#map img").height(); // returns 0
Используйте .clientHeight
(чистый JavaScript):
https://jsfiddle.net/ryanpcmcquen/v6yz8t3u/
console.log(document.querySelector('img').clientHeight);
<img src="//makelin.us/100/100" />
Читайте на него здесь: https://developer.mozilla.org/en-US/docs/Web/API/Element/clientHeight
Обратите внимание, что это даст вам высоту по мере того, как изображение появится на странице, на нее может повлиять CSS.
Примечание: Для того, чтобы узнать реальную высоту изображения, используйте .naturalHeight
.
Большая статья здесь:https://davidwalsh.name/get-image-dimensions
Чтобы убедиться, что это работает после загрузки изображения, сделайте следующее:
window.addEventListener('load', function() {
console.log(document.querySelector('img').clientHeight);
});
Рассмотрите этот ответ: http://stackoverflow.com/a/623174/3681882 По вашему мнению, это возвращает высоту изображения _actual_ или высоту _rendered_ ? – CrakC
@CrakC, спасибо за пинг. Это высота рендеринга, я добавил «.naturalHeight». – ryanpcmcquen
Проблема в том, что размеры изображения еще не загружены, см. Мой ответ ниже. – turbopipp
Вы можете сослаться следующий пример, чтобы получить высоту
имидж-<div id="map">
<img id="img_id" src="http://www.clickerzoneuk.co.uk/cz/wp-content/uploads/2010/10/PuppySmall.jpg" >
</div>
напишите следующий код в js файле
var height = document.getElementById("img_id").clientHeight;
alert(height);
проверка пример с использованием следующей ссылка-
'.height' устарел: https: //developer.mozilla.org/en-US/docs/Web/API/Document/height – ryanpcmcquen
Если я console.log объекта, есть свойство 'height'. Это правда? –
Проблема в том, что высота или ширина еще не рассчитаны, слушать загрузки изображения с .on("load", handler)
$("#map img").on("load", function(){
var height = $(this).height();
$('#output').html('height=' + height);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script>
<div id="map">
<img src="http://placehold.it/400x40">
</div>
<div id="output"></div>
Наверное, правда, но уже отправлено примерно на полчаса раньше в комментариях. Кстати, 'load()', используемый таким образом, устарел некоторое время. Это правильная ссылка: http://api.jquery.com/load-event/. – Shikkediel
Кажется, что с 1,8, вы правы. Но заменить «.on (« load », handler)» должно быть хорошо, не так ли? – turbopipp
В принципе, да, но я думаю, что это немного больше, чем это. Если изображение было кэшировано, событие загрузки не будет срабатывать - и в этом случае также не будет расчет высоты. Таким образом, более широкий подход может состоять в том, чтобы прослушать событие onload (window) onload (которое всегда будет правильным) или выполнить проверку заранее, используя '.complete', который является индикатором уже загруженного изображения. Но этот последний бит просто понадобился бы, если бы вы хотели сэкономить время и могли бы скомпрометировать вещи. Принятый ответ в ссылке, которая была отмечена в комментариях, на самом деле не так корректна. – Shikkediel
Это сработало для меня:
$(window).load(function() {
var artLists = [];
$("ul.articles").each(function (index) {
var imageHts = [];
$("li img", $(this)).each(function() {
imageHts.push($(this)[0].height);
})
artLists.push(imageHts);
})
});
Добавить код _complete_, когда вы пытаетесь получить высоту изображения – Tushar
Возможный дубликат http://stackoverflow.com/questions/16084374/jquery-width-and-height-return-0-for-img-element –
Возможный дубликат [Как получить размер изображения (высота и ширина) с помощью JavaScript?] (Http://stackoverflow.com/questions/623172/how-to-get-image-size-height-width-using-javascript) – Wanderer