@DaniilPo

Почему setTimeout не работает?

function slideshow(j,i){
		if(i > 2){
			i = 0;
		}
		if(j > 2){
			j = 0;
		}
		imgarr[j].style.display = "none";	
     	imgarr[i].style.display = "block";	
		console.log(i);
		console.log(j);
		setTimeout(slideshow(j+1,i+1), 50000);
	}

вот есть такая функция и она по факту работает но по какой-то причине setTimeout игнорируется и не ждёт время до повторного запуска а лишь бесчисленное раз запускает функцию, как это можно исправить и может есть какие-то варианты получше как это реализовать?
  • Вопрос задан
  • 176 просмотров
Решения вопроса 2
sergiks
@sergiks Куратор тега JavaScript
♬♬
setTimeout(() => slideshow(j++, i++), 5e4);
первым аргументом должна быть функция, которая выполнится через время.

А у вас был результат мгновенного выполнения функции.
Ответ написан
Комментировать
ProgrammerForever
@ProgrammerForever
Учитель, автоэлектрик, программист, музыкант
Вы вызываете функцию slideshow(j+1,i+1), а надо просто её передать. Или заверните её в лямбду хотя бы
setTimeout(()=>slideshow(j+1,i+1), 50000);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Glassman22
@Glassman22
Программист, фрилансер
Друг, попробуй сделать это
setTimeout(() => slideshow(j+1,i+1), 50000)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы