uzumeti
@uzumeti

Почему функция выполняется, когда её не приглашают?

Привет!

Только-только начал вникать в JS. Вот пробую сделать слайдер картинок. Столкнулся с интересной проблемой (и уже не первый раз). Функция сама выполняется, даже если к ней нет обращения. Почему так происходит? Помогите пожалуйста понять.

В данном случае интервал обнуляется даже без нажатия на кнопку, хотя по всей логике (вероятно неправильной), только клик по кнопке должен вызвать запуск функции.

Пробовал выносить обнуление интервала в отдельную функцию и включать её в теле основной функции - результат тот же.

Пример кода:

var MySlider = document.querySelectorAll('#slides .slide');
var currentPicture = 2;
var IntervalForChange = setInterval(nextSlide,3500);



function nextSlide() {
    goToSlide(currentPicture+1);
	clearInterval(IntervalForChange); // Вот этот интервал срабатывает сам и слайдер просто стоит на месте.
	
}

function backSlide() {
    goToSlide(currentPicture-1);
}

function goToSlide(n) {
 MySlider[currentPicture].className = 'slide';
 currentPicture = (n+MySlider.length)%MySlider.length;
 MySlider[currentPicture].className = 'slide showing';
}


Подобные проблемы наблюдаю не первый раз. Подскажите, что почитать, где поискать? Спасибо.
  • Вопрос задан
  • 160 просмотров
Решения вопроса 1
Stalker_RED
@Stalker_RED
В третьей строке вы какбы пишете:
движок, запускай функцию nextSlide каждые 3.5 секунды

Внутри функции nextSlide вы пишете:
движок, отмени тот приказ, который был в третьей строке

Поэтому nextSlide выполняется всего один раз.

Не совсем понятно, почему вы пишете "срабатывает сам", если сами же написали cleraInterval.
Или это диверсанты проникли к вам в код? :)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект
22 нояб. 2024, в 22:26
3500 руб./за проект