Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: funkcja onload
Forum PHP.pl > Forum > Po stronie przeglądarki
di@blo
Witam
Mam taką funkcję:

  1. initImg = function(image){
  2.  
  3. var img = new Image();
  4. img.onload = function() {
  5.  
  6. var obj = new Object();
  7. //var propSzer = 'szer';
  8. //var propWys = 'wys';
  9. //var propTop = 'top';
  10. //var propLeft = 'left';
  11. //var propSrc = 'src';
  12.  
  13. if( this.width > this.height ) {
  14. obj[propSzer] = galery_w;
  15. obj[propWys] = obj[propSzer] / this.width * this.height;
  16. obj[propTop] = ( galery_h - obj[propWys] ) / 2;
  17. obj[propLeft] = 0;
  18. }
  19. else {
  20. obj[propWys] = galery_h;
  21. obj[propSzer] = obj[propWys] / this.height * this.width;
  22. obj[propTop] = 0;
  23. obj[propLeft] = ( galery_w - obj[propSzer] ) / 2;
  24. }
  25. };
  26. img.src = image;
  27.  
  28. obj[propSrc] = image;
  29.  
  30. return obj;
  31. }


dalej muszę wykonać coś takiego:

  1. var image = wymiary(zm3);
  2. $("#galery").append("<img src='"+image.src+"' alt='' />");
  3. $("#galery img").delay(1000).animate({ 'top': image.top, 'left': image.left, 'width': image.wys, 'height': image.szer}, time3 )


Kombinowałem pół dnia, ale nic nie działa. Wartości objektu obj nie są widoczne poza funkcją onload (słusznie zresztą). Szukam podpowiedzi jak z funkcji onload przenieść wygenerowane wartości tak by były widoczne w funkcji initImg, a na koniec widoczne w miejscu gdzie muszę podać je jako wartości w .animate();

Próbowałem dodać własności do obiektu typu Image

  1.  
  2. img.onload = function() {
  3.  
  4. //var propSzer = 'szer';
  5. //var propWys = 'wys';
  6. //var propTop = 'top';
  7. //var propLeft = 'left';
  8. //var propSrc = 'src';
  9.  
  10. if( this.width > this.height ) {
  11. this[propSzer] = galery_w;
  12. this[propWys] = this[propSzer] / this.width * this.height;
  13. this[propTop] = ( galery_h - this[propWys] ) / 2;
  14. this[propLeft] = 0;
  15. }
  16. else {
  17. this[propWys] = galery_h;
  18. this[propSzer] = this[propWys] / this.height * this.width;
  19. this[propTop] = 0;
  20. this[propLeft] = ( galery_w - this[propSzer] ) / 2;
  21. }
  22. };


Ale nie przyniosło to zamierzonych efektów. Czy obiekt typu Image można w ogóle rozbudować?

Obawiam się, że to co stworzyłem to w ogóle jakieś głupoty, więc liczę na jakąś podpowiedź i objaśnienia. Z góry dziękuję.
morthan
Sprecyzuj co chcesz osiągnąć. To może pomóc forumowiczom.
Pozdro
raadecki
  1. var initImg = function(image){
  2. var img = new Image(),
  3. galery_w = 300,
  4. galery_h = 300,
  5. obj = {},
  6. propSzer = 'szer',
  7. propWys = 'wys',
  8. propTop = 'top',
  9. propLeft = 'left',
  10. propSrc = 'src';
  11.  
  12. img.onload = function() {
  13. if( this.width > this.height ) {
  14. obj[propSzer] = galery_w;
  15. obj[propWys] = obj[propSzer] / this.width * this.height;
  16. obj[propTop] = ( galery_h - obj[propWys] ) / 2;
  17. obj[propLeft] = 0;
  18. } else {
  19. obj[propWys] = galery_h;
  20. obj[propSzer] = obj[propWys] / this.height * this.width;
  21. obj[propTop] = 0;
  22. obj[propLeft] = ( galery_w - obj[propSzer] ) / 2;
  23. }
  24. }
  25.  
  26. img.src = image;
  27. obj[propSrc] = image;
  28.  
  29. return obj;
  30. }


z grubsza chodzi o widoczność zmiennych... u Ciebie obiekt był zadeklarowany wewnątrz listenera onload... a powinien być w funkcji wyżej
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.