Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.10.2013, 21:03
Новичок на форуме
Отправить личное сообщение для Webkraft Посмотреть профиль Найти все сообщения от Webkraft
 
Регистрация: 22.07.2011
Сообщений: 6

Помогите со слайдером пожалуйсто.
Подскажите пожалуйсто что я делаю не так. Не как не могу заставить нормально роботать слайдер.

Что должен далать слайдер.
Выводить блоки через указанные пользователем промежутки времени.

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

Вот код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
</head>
<body>
<a href="" id="sliderLink" target="_self">Slider link</a>
	<div class="timerslide" style="position: relative; width:400px; height:150px;">
    	<div style="background-color:red; width:400px; height:150px; position:absolute" class="slid1" data-time="5" data-url="http://www.com" data-target="_self">
        </div>
        <div style="background-color:green; width:400px; height:150px;  position:absolute" class="slid1" data-time="10" data-url="http://www.com" data-target="_self">
        </div>
        <div style="background-color:grey; width:400px; height:150px;  position:absolute" class="slid1" data-time="20" data-url="http://www.com" data-target="_self">
        </div>
	</div>
    
<script> 
function timerSlider() {
	var timerSlid = $('div', '.timerslide'),
	changeTime = 0,
	targetImg = timerSlid.eq(0),
	nextImg = timerSlid.eq(1);
	timerSlid.not(targetImg).css('opacity', 0);
	function changeSlide() {
		changeTime = targetImg.attr('data-time') * 1000;
		console.log(targetImg.index());
		
			setTimeout(function() {
				targetImg.animate({'opacity': 0}, 1000, function() {
				});
				nextImg.animate({'opacity': 1}, 1000, function() {
				$('#sliderLink').attr('href', $(this).attr('data-url'));
				$('#sliderLink').attr('target', $(this).attr('data-target'));
				targetImg = $(this);
				nextImg = targetImg.index() < timerSlid.length -1 ? timerSlid.eq(targetImg.index()+ 1) : timerSlid.eq(0);
				});
				changeSlide();
			}, changeTime);
	}
	
	changeSlide();
}
timerSlider()
</script>    
</body>
</html>


По сути этого кода он должен выводить 1й див в течении 5 секунд, 2й в течении 10 секунд и 3й в течении 20 секунд. Но получается так что первый и второй выводятся в течении 5 сек. , а третий в течении 10 сек. Соотведственно первый на втором цыкле показывается в течении 20 сек.

Не как не могу нормально цыкл поставить кто сталкивался или просто мозгами богат помогите.
Ответить с цитированием
  #2 (permalink)  
Старый 13.10.2013, 22:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Webkraft,
вариант ...
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
</head>
<body>
<a href="" id="sliderLink" target="_self">Slider link</a>
	<div class="timerslide" style="position: relative; width:400px; height:150px;">
    	<div style="background-color:red; width:400px; height:150px; position:absolute" class="slid1" data-time="5" data-url="http://www.com" data-target="_self">
        </div>
        <div style="background-color:green; width:400px; height:150px;  position:absolute" class="slid1" data-time="10" data-url="http://www.com" data-target="_self">
        </div>
        <div style="background-color:grey; width:400px; height:150px;  position:absolute" class="slid1" data-time="20" data-url="http://www.com" data-target="_self">
        </div>
	</div>

<script>
function timerSlider() {
	var timerSlid = $('div', '.timerslide'),
	changeTime,
	targetImg,
	next = timerSlid.size()-1;
    timerSlid.css('opacity', 0);
	function changeSlide() {
        timerSlid.eq(next).animate({'opacity': 0}, 1000);
        next = ++next%timerSlid.size();
        targetImg = timerSlid.eq(next);
        targetImg.animate({'opacity': 1}, 1000);
		changeTime = targetImg.data('time') * 1000;
        $('#sliderLink').attr({'href': targetImg.data('url'), 'target':targetImg.data('target')});
		setTimeout(function() {
			 changeSlide();
			}, changeTime);
	}

	changeSlide();
}
timerSlider()
</script>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 13.10.2013, 23:21
Новичок на форуме
Отправить личное сообщение для Webkraft Посмотреть профиль Найти все сообщения от Webkraft
 
Регистрация: 22.07.2011
Сообщений: 6

Спасибо. Хочу такиеже мозги!
А можно разжевать(расписать), что происходит на 27 строке ?

Последний раз редактировалось Webkraft, 13.10.2013 в 23:40.
Ответить с цитированием
  #4 (permalink)  
Старый 13.10.2013, 23:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от Webkraft
происходит на 27 строке
генерация следующего номера 2...0...1...2...и тд.
(2+1)%3 = 0;
(0+1)%3 = 1;
(1+1)%3 = 2;

Последний раз редактировалось рони, 13.10.2013 в 23:51.
Ответить с цитированием
  #5 (permalink)  
Старый 14.10.2013, 01:05
Новичок на форуме
Отправить личное сообщение для Webkraft Посмотреть профиль Найти все сообщения от Webkraft
 
Регистрация: 22.07.2011
Сообщений: 6

Модульное деление понял спасибо. Затупил с модульным ...
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите со слайдером trambi Общие вопросы Javascript 0 18.02.2013 07:23
Помогите со слайдером DeveloperTeam Элементы интерфейса 0 18.10.2012 18:44
Помогите разобраться с jquery слайдером!!! Andy76 jQuery 0 25.11.2011 18:12
Помогите с меню пожалуйсто Геворг (X)HTML/CSS 3 28.02.2011 16:50
Помогите! Многоуровневые вкладки! sergeeeeee Элементы интерфейса 2 02.08.2010 23:50