2013-02-18 4 views
0

Итак, я пытаюсь прочитать высоту и ширину элементов img, созданных с помощью jquery.Разница в значении при загрузке страницы и обновлении страницы

Это код, я пытаюсь выполнить

$(document).ready(function() 
{ 
    $.ajax({ 
      url: 'res/script/getImage.php', 
      type: 'POST', 
      data: { 
       param : 'Load' 
      }, 
      success: function(result) 
      { 
       ImageArray = JSON.parse(result); 
       for(i=0; i<ImageArray.length; i++) 
       { 
         //Read the Image element and update to gallery 

         document.getElementById("gallery").innerHTML += ImageElement; 
         ImageArrayComplete[ImageCounter] = ImageArray[i].image; 
         UserArrayComplete[ImageCounter] = ImageArray[i].user; 

       } 

      //Create Canvas 
      $('#gallery img').each(function() { 
       console.log(this); 
       console.log('Width=' + this.width+ 'Height='+this.height); 
       createCanvas(this); 
      }); 

      } 
     }); 
}); 

Выход console.log(this); это путь к изображению, который, как ожидалось.

Но выход console.log('Width=' + this.width+ 'Height='+this.height); равен 0 для ширины и высоты при начальной загрузке страницы.

Значение обновляется до фактической ширины 200 после обновления страницы.

Нет другой ошибки, возникшей и как в Firefox, так и в Chrome. Что мне здесь не хватает?

+0

страница обновления означает что? вы обновляете его, нажав кнопку 'f5' –

+0

@Ravi Да, я нажимаю f5 –

+0

' dataType: 'json'' отсутствует и что вы получаете в функции успеха try 'console.log (result)'. – Jai

ответ

0

Вы уверены, что img select имеет значения высоты и ширины?

+0

Если свойств не было, они были бы «неопределенными», а не «0» – matzahboy

+0

Да, иначе я бы не стал получить значения, когда я обновляю страницу. Ошибка возникает только при начальной загрузке страницы. –

+1

@ de-bugged, когда вы обновляете страницу, браузер использует кешированную копию изображения, а это значит, что она доступна мгновенно, когда вы устанавливаете источник. При начальной загрузке без кешированной копии единственное место, где можно получить ширину/высоту, состоит в том, чтобы жестко закодировать их в фактический тег html: '' – Norguard

0

Ваш ImageElement объект не определен. попробуйте это:

изменение

document.getElementById("gallery").innerHTML += ImageElement; 

в

$('<img/>').attr('src', ImageArray[i].image).appendTo($('#gallery')); 

и this объект не имеет height и width атрибут. если вы хотите его получить, используйте:

console.log('Width=' + $(this).width() + 'Height=' + $(this).height()); 
+0

Я определил ImageElement. Это было слишком долго для публикации. Короче говоря, это будет что-то вроде «ImageElement \t = ''; '' –

+0

У меня есть мой ответ – nvl

+0

'this.height' не будет работать, вы должны использовать' $ (this) .height() ' – nvl