2012-01-09 2 views
0

Я работаю над простым скриптом, который скроет мои изображения, пока они не будут полностью загружены, а затем покажут их.Скрытие и отображение изображений onload

$(document).ready(function(){ 
    for(var i=0; i<document.images.length; i++){     
     document.images[i].style.visibility="hidden"; 
     document.images[i].addEventListener("load", function(i){ 
      document.images[i].visibility="visible"; 
     }, false); 
    } 
}); 

По какой-то причине, когда цикл доходит до addEventListener части, поджигатель говорит мне, что document.images[i] является undefined. Может ли кто-нибудь сказать мне, что я делаю неправильно?

+2

Почему вы не используете систему событий JQuery? – SergeS

+1

Могу ли я спросить, как вы уже используете jquery, почему вы не используете его для оставшейся части кода? – Yoshi

+0

Только что понял, что должен быть document.images [i] .style.visibility. Однако проблема не устранена. – Sceletia

ответ

1

попробуйте использовать this внутри обработчика addEventListener.

document.images[i].addEventListener("load", function(){ 
       this.visibility="visible"; 
       }, false); 

вы также можете попробовать

document.images[i].onload = function(){ 
      this.visibility="visible"; 
     }; 
+0

Спасибо, dku, что работает красиво. – Sceletia

+0

gr8 .. добро пожаловать чувак .. –

3

Попробуйте что-то вроде:

$(function() { 
    $('img').css('visibility', 'hidden'); 
    $('img').on('load', function() { 
    $(this).css('visibility', 'visible'); 
    }); 
}); 

и посмотреть на on

+0

Спасибо Yoshi, сделаю. – Sceletia

Смежные вопросы