Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Получить width and height изображения. (https://javascript.ru/forum/dom-window/55442-poluchit-width-height-izobrazheniya.html)

LCH 27.04.2015 20:58

Получить width and height изображения.
 
Здравствуйте!

Пытаюсь написать функцию, но пока не выходит, прошу помощи.

Суть:
На странице есть ссылки на изображения. Это обычные текстовые ссылки. Я беру атрибут href каждой ссылки, создаю для каждой такой ссылки объект Image и добавляю его на страницу используя метод append() jquery. Потом мне нужно получить ширину/высоту изображения, чтобы спозиционировать его. И вот здесь начинаються трудности:
theImg = new Image();
theImg.src = link;
$(theImg).on('load', function(){
var imgWidth = this.width;
var imgHeight = this.height;
$('body').append($(this));	
})

Внутри .on() ширина/высота возвращаются нормально, а как мне их использовать вне этой функции?

И правильно ли я вызываю методы для получения высоты/ширины?

Safort 27.04.2015 21:07

http://stackoverflow.com/questions/6...ing-javascript

LCH 27.04.2015 21:18

Спасибо за ответ. Я переписал так функцию:
theImg = new Image();
theImg.src = link;
var imgWidth = theImg.clientWidth;
var imgHeight = theImg.clientHeight;
theImg.onload = function(){
$('.body').append(this);
}
console.log(imgHeight);


Но console.log возвращает 0

Safort 27.04.2015 21:28

LCH,
конечно, ведь данные ещё не успели загрузиться. Все операции с картинкой нужно проводить уже внутри onload.

LCH 27.04.2015 21:31

Внутри да, все работает, а как передать переменную width/height изнутри onload, чтобы использовать ее?

Safort 27.04.2015 21:37

LCH,
как-то так.
var imgWidth, imgHeight;

theImg = new Image();
theImg.src = link;

$(theImg).on('load', function() {
  imgWidth = this.width;
  imgHeight = this.height;
  $('body').append($(this)); 
})


Но помни, что это не рекомендуется, т.к. может привести к некоторым ошибкам.


Часовой пояс GMT +3, время: 06:53.