Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Некорректно работает код (https://javascript.ru/forum/events/44474-nekorrektno-rabotaet-kod.html)

literator 21.01.2014 14:35

Некорректно работает код
 
var GaleryImgW='';
var GaleryImgH='';
var CenterW='';
var CenterH='';
var GaleryImgWH='';
var CenterWH='';
var newGaleryImgW='';
var newGaleryImgH='';

function f(){
$('.galery').removeAttr("style");
GaleryImgW=$('.galery').width();    
GaleryImgH=$('.galery').height();
CenterW=$('#galerydiv').width();
CenterH=$('#galerydiv').height();
GaleryImgWH=GaleryImgH/GaleryImgW;
CenterWH=CenterH/CenterW;
newGaleryImgW=CenterH/GaleryImgWH;
newGaleryImgH=CenterW*GaleryImgWH;
if(GaleryImgW > CenterW){ //Размещаем картинку внуттри контента по максимальным возможностям
	if(GaleryImgH > CenterH){
		if(CenterWH >= GaleryImgWH){
			$('.galery').css({"width":CenterW});
			$('.galery').css({"height":newGaleryImgH});
		}
		else{
			$('.galery').css({"height":CenterH});
			$('.galery').css({"width":newGaleryImgW});
		}
	}
	else{
		$('.galery').css({"width":CenterW});
		$('.galery').css({"height":newGaleryImgH});
	}
}
else{
	if(GaleryImgH > CenterH){
		$('.galery').css({"height":CenterH});
		$('.galery').css({"width":newGaleryImgW});
	}
}
};

setInterval(function(){
var way="/templates/neon/images/galery/"+array[Math.floor(Math.random()*(21-2 +1))+2];
$('.galery').attr("src",way);
f();},
5500);



<div id="galerydiv" style=" top: 69px; left: 88px;">
<img src="/templates/neon/images/galery/Anka_Lebedeva.jpg" class="galery">
</div>



Вот такой код. Js измеряет размер оберточного блока galerydiv и в зависимости от размера этого блока выставляет размер картинки. Все хорошо, но...попытался задать setInterval и понеслось. При смене картинки, она приобретает размеры предыдущий картинки на несколько секунд, потом лишь приобретает нормальные размеры. В чем дело? Есть какая-то фишка в setInterval?

literator 21.01.2014 14:38

Все! Проблема решилась!) Вот как
setInterval(function(){
var way="/templates/neon/images/galery/"+array[Math.floor(Math.random()*(21-2 +1))+2];
$('.galery').attr("src",way);
$('.galery').load(function(){
f();
});},
5500);

Заставил скрипт дожидаться загрузки картинки

kostyanet 21.01.2014 15:08

Цитата:

Сообщение от literator
Js измеряет размер оберточного блока galerydiv и в зависимости от размера этого блока выставляет размер картинки.

По-моему браузер без js это умеет делать.


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