Остановить функцию автозапуска, пока не будет нажата кнопка запуска

Ранее мне помогли создать кнопку паузы для моего слайд-шоу изображений, и, похоже, она работает до определенного момента.

Слайд-шоу запускается автоматически при нажатии кнопки «Пуск». Это работало нормально, пока я не поиграл с кодом, чтобы кнопка паузы работала. Теперь функция автозапуска запускается при загрузке страницы. Есть ли способ предотвратить это, и чтобы он просто запускался, когда я нажимаю кнопку «Пуск»? Ваше здоровье

HTML

  <button onClick="autoRun()">Start</button>
  <button onClick="changeImage(-1); return false;">Previous Image</button>
  <button onClick="pause();">pause</button>
  <button onClick="changeImage(1); return false;">Next Image</button>

JavaScript

var images = ["HGal0.jpg", "HGal1.jpg", "HGal2.jpg", "HGal3.jpg", "HGal4.jpg", "HGal5.jpg", "HGal6.jpg", "HGal7.jpg", "HGal8.jpg", "HGal9.jpg", "HGal10.jpg", "HGal11.jpg", "HGal12.jpg", "HGal13.jpg", "HGal14.jpg", "HGal15.jpg"];
var interval = setInterval("changeImage(1)", 2000);
var imageNumber = 0;
var imageLength = images.length - 1;

function changeImage(x) {
imageNumber += x;
// if array has reached end, starts over
if (imageNumber > imageLength) {
    imageNumber = 0;
}
if (imageNumber < 0) {
    imageNumber = imageLength;
}

document.getElementById("slideshow").src = images[imageNumber];

return false;
}

function autoRun() {
setInterval("changeImage(1)", 2000);

}

function pause(){
clearInterval(interval);
}

person B.Cx    schedule 01.09.2016    source источник
comment
Now the autoRun function starts when the page loads - ничто в опубликованном вами коде не может вызвать это - где-то вы должны запускать autoRun() ... решение, не делайте этого   -  person Jaromanda X    schedule 01.09.2016
comment
@JaromandaX autoRun появляется только дважды во всем коде, который я опубликовал; один раз в html с кнопкой запуска, а сама функция внутри javascript   -  person B.Cx    schedule 01.09.2016
comment
Ранее мне помогли создать кнопку паузы для моего слайд-шоу изображений, и, кажется, она работает до определенного момента. Был ли решен предыдущий вопрос?   -  person guest271314    schedule 01.09.2016
comment
о, FFS - автозапуск не выполняется, вы установили интервал для выполнения действий в коде var interval = setInterval("changeImage(1)", 2000); ... остальная часть кода не будет работать должным образом, если вы остановите, а затем запустите, вы не сможете снова остановиться .. , если кто-то помог вам написать это в вашем предыдущем вопросе, их нужно расстрелять   -  person Jaromanda X    schedule 01.09.2016
comment
@JaromandaX Последнее предложение вызвало столь необходимую улыбку. Хотя дыры не решают проблем   -  person guest271314    schedule 01.09.2016
comment
@guest271314 @guest271314 - Я надеюсь, что это не было воспринято слишком плохо, я уверен, что оказанная помощь была настолько хороша, насколько это возможно ... учитывая обстоятельства: p   -  person Jaromanda X    schedule 01.09.2016
comment
@JaromandaX stackoverflow.com/questions/39261749/pausing-a-function- по клику . Читать раньше. Не удалось определить ожидаемый результат.   -  person guest271314    schedule 01.09.2016
comment
@B.Cx между прочим, см. th/">A: приостановка анимации CSS с помощью javascript, а также переход к определенному месту в анимации , Приостановить слайд-шоу при наведении   -  person guest271314    schedule 01.09.2016
comment
@JaromandaX Надеюсь, это не было воспринято слишком плохо Быть навсегда уволенным за возможную ошибку при попытке помочь? Нет, все в порядке; закаляет характер   -  person guest271314    schedule 01.09.2016
comment
Being permanently sacked for a possible error while trying to help - не знаю, как там моя работа!!! :п   -  person Jaromanda X    schedule 01.09.2016


Ответы (2)


Пожалуйста, удалите следующую строку кода и дайте мне знать, помогло ли это var interval = setInterval("changeImage(1)", 2000);

person snit80    schedule 01.09.2016
comment
это на самом деле отвечает на вопрос ... следующая проблема будет заключаться в том, что он не сможет остановить слайд-шоу после запуска: p - person Jaromanda X; 01.09.2016
comment
Что сказал Джароманда: «Если я удалю эту строку кода, она вернется к моему исходному коду, который у меня был, который отлично работает, но тогда кнопка паузы больше не будет работать, что возвращает меня к исходной точке, ха-ха». - person B.Cx; 01.09.2016
comment
Лол, хорошо, вам нужно будет сделать что-то вроде этого 'var interval = setInterval(changeImage(1), 2000);pause();' - person snit80; 01.09.2016
comment
Я комментировал это исправление ... оно устраняет непосредственную проблему, не решая никаких других проблем в опубликованном коде. - person Jaromanda X; 01.09.2016

Объявите interval как переменную, определите interval внутри autoRun

<button onClick="autoRun()">Start</button>
<button onClick="pause(); changeImage(-1); autoRun();">Previous Image</button>
<button onClick="pause();">pause</button>
<button onClick="pause(); changeImage(1); autoRun();">Next Image</button>
<script>
  var images = ["HGal0.jpg", "HGal1.jpg", "HGal2.jpg", "HGal3.jpg", "HGal4.jpg", "HGal5.jpg", "HGal6.jpg", "HGal7.jpg", "HGal8.jpg", "HGal9.jpg", "HGal10.jpg", "HGal11.jpg", "HGal12.jpg", "HGal13.jpg", "HGal14.jpg", "HGal15.jpg"];
  var interval;
  // = setInterval("changeImage(1)", 2000);
  var imageNumber = 0;
  var imageLength = images.length - 1;

  function changeImage(x) {
    imageNumber += x;
    // if array has reached end, starts over
    if (imageNumber > imageLength) {
      imageNumber = 0;
    }
    if (imageNumber < 0) {
      imageNumber = imageLength;
    }

    //document.getElementById("slideshow").src = 
    console.log(images[imageNumber]);

    return false;
  }

  function autoRun() {
    interval = setInterval("changeImage(1)", 2000);
  }

  function pause() {
    clearInterval(interval);
    interval = null;
  }
</script>

person guest271314    schedule 01.09.2016
comment
Абсолютная легенда, это сработало отлично. Можно ли быстро объяснить, что это делает? Ваше здоровье. - person B.Cx; 06.09.2016
comment
@B.Cx interval объявляется вне autoRun и определяется, когда autoRun вызывается interval = setInterval("changeImage(1)", 2000);; pause(); changeImage(-1); autoRun(); все вызываются для предыдущего клика и клика по изображению, pause(); changeImage(1); autoRun() все вызываются для следующего клика по изображению; в pause() очистить интервал и установить интервал равным нулю clearInterval(interval); interval = null; - person guest271314; 06.09.2016