Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.01.2014, 14:35
Интересующийся
Отправить личное сообщение для literator Посмотреть профиль Найти все сообщения от literator
 
Регистрация: 18.08.2013
Сообщений: 13

Некорректно работает код
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?
Ответить с цитированием
  #2 (permalink)  
Старый 21.01.2014, 14:38
Интересующийся
Отправить личное сообщение для literator Посмотреть профиль Найти все сообщения от literator
 
Регистрация: 18.08.2013
Сообщений: 13

Все! Проблема решилась!) Вот как
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);

Заставил скрипт дожидаться загрузки картинки
Ответить с цитированием
  #3 (permalink)  
Старый 21.01.2014, 15:08
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от literator
Js измеряет размер оберточного блока galerydiv и в зависимости от размера этого блока выставляет размер картинки.
По-моему браузер без js это умеет делать.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Код работает только на опере и ie ml227 Общие вопросы Javascript 2 07.07.2013 12:08
ФОТОГАЛЕРЕЯ не работает код Азбука Общие вопросы Javascript 3 23.11.2011 10:43
Не работает код в IE 6 systemiv Общие вопросы Javascript 6 05.11.2011 07:25
Код работает корректно во всех браузерах кроме IE8 Yamasa Events/DOM/Window 6 18.01.2011 07:40
Код не работает в седьмом Эксплорере... vol4ara Общие вопросы Javascript 0 14.07.2008 18:53