Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.05.2014, 15:25
Аспирант
Отправить личное сообщение для VitAl2013 Посмотреть профиль Найти все сообщения от VitAl2013
 
Регистрация: 27.05.2011
Сообщений: 67

Узнаю высоту и ширину картинки, не получается достать переменые из функции
var pic_real_width_0, pic_real_height_0;
    var img = $(this).children('img:eq(0)');
    $("<img/>") 
        .attr("src", $(img).attr("src"))
        .load(function() {
            pic_real_width_0 = this.width; console.log('pic_real_width [0] = '+pic_real_width_0);  
            pic_real_height_0 = this.height; console.log('pic_real_height [0]= '+pic_real_height_0);
        });
console.log('pic_real_width [0] = '+pic_real_width_0);


Подскажите почему не работает - не вынимает значения выше функции? Как сделать чтоб заработало? Может функцией сохранить левый параметр на странице, а потом его считать? (изврат, но что делать)
Ответить с цитированием
  #2 (permalink)  
Старый 24.05.2014, 15:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

VitAl2013,
на всякий случай
строка 9 сработает раньше строки 5
да и строки 4 и 5 лучше поменять местами

Последний раз редактировалось рони, 24.05.2014 в 16:21.
Ответить с цитированием
  #3 (permalink)  
Старый 24.05.2014, 16:15
Аспирант
Отправить личное сообщение для VitAl2013 Посмотреть профиль Найти все сообщения от VitAl2013
 
Регистрация: 27.05.2011
Сообщений: 67

так и нормально что 9 позднее 5. В 5 происходит загрузка изображение, в 6 и 7 образмеривание и вывод в консоль не покидая функции, а 9 по задумке затем выводит в консоль значение уже за пределами функции. (вот если наоборот 5 (загрузка) произойдёт позже 9, то вот... надо подумать - может тут собака порылась. А если поменять 4 и 5 местами то src присвоиться после загрузки - нечего будет загружать - пустая коробка будет создана и загружена, и только потом произойдёт смена src - коробка поймёт что в себя грузить.
Ответить с цитированием
  #4 (permalink)  
Старый 24.05.2014, 16:17
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от VitAl2013
src присвоиться после загрузки
подскажите что у вас грузится?

исправил
строка 9 сработает раньше строки 5
5 строка может и не сработать совсем

Последний раз редактировалось рони, 24.05.2014 в 16:23.
Ответить с цитированием
  #5 (permalink)  
Старый 24.05.2014, 16:34
Аспирант
Отправить личное сообщение для VitAl2013 Посмотреть профиль Найти все сообщения от VitAl2013
 
Регистрация: 27.05.2011
Сообщений: 67

Спасибо за помощь. Нашёл элегантное решение в виде методов:
(function($){
    var
    props = ['Width', 'Height'],
    prop;

    while (prop = props.pop()) {
    (function (natural, prop) {
      $.fn[natural] = (natural in new Image()) ? 
      function () {
      return this[0][natural];
      } : 
      function () {
      var 
      node = this[0],
      img,
      value;

      if (node.tagName.toLowerCase() === 'img') {
        img = new Image();
        img.src = node.src,
        value = img[prop];
      }
      return value;
      };
    }('natural' + prop, prop.toLowerCase()));
    }
  }(jQuery));

Используется потом так:
nWidth = $('img#example').naturalWidth(),
nHeight = $('img#example').naturalHeight();

Уже опробовал - работает. Взял отсюда: http://www.jacklmoore.com/notes/natu...lheight-in-ie/
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JS задать ширину и высоту фоновой картинки andrey888 Элементы интерфейса 4 10.01.2012 18:31
Не получается поменять высоту div revvo jQuery 4 06.08.2011 13:12