Показать сообщение отдельно
  #1 (permalink)  
Старый 01.06.2017, 10:32
Кандидат Javascript-наук
Отправить личное сообщение для arkadii_parovozov Посмотреть профиль Найти все сообщения от arkadii_parovozov
 
Регистрация: 24.11.2016
Сообщений: 101

Помогите разобраться с setTimeout
Здравствуйте господа!

Решил сделать мини слайдер на js:
function nextSlide(slide){
	currentSlide = slide;
	
	if(currentSlide == 0 || currentSlide == 3)
	{
		currentSlide = 1;
		$("#s2,#s3").css("visibility", "hidden");
		$("#s1").css("visibility", "visible");
		setTimeout(nextSlide(1),2000);
	}
	else if(currentSlide == 1)
	{
		currentSlide = 2;
		$("#s1,#s3").css("visibility", "hidden");
		$("#s2").css("visibility", "visible");
		setTimeout(nextSlide(2),2000);
	}
	else
	{
		currentSlide = 3;
		$("#s1,#s2").css("visibility", "hidden");
		$("#s3").css("visibility", "visible");
		setTimeout(nextSlide(3),2000);
	}
}

Функция nextSlide(0); вызывается при загрузки страницы.

Я так понимаю что setTimeout вызывает функцию через заданное количество миллисекунд, но функция не зацикливается. Пытался реализовать через setInterval(nextSlide(currentSlide),2000); но переменная currentSlide не видна за пределами функции nextSlide.

в принципе удобней было бы реализовать с помощью setTimeout для каждого блока if-else так как в этом случае можно будет прописывать разное время задержки для каждой картинки. Но не могу понять принцип работы setTimeout.
Ответить с цитированием