Вопрос по javascript, html – Приостановка выполнения Javascript до нажатия кнопки
Я создаю визуализацию создателя судоку для своего класса Algorithms (в Javascript). Алгоритм работает отлично, но у меня возникают проблемы с поиском способа приостановить выполнение.
В настоящее время я используюprompt()
сделать паузу, но это громоздко и раздражает. Есть ли способ сделать паузу, пока не будет запущена другая функция (через кнопку HTML), кроме непрерывнойwhile
цикл?
Я могу опубликовать код, но я не думаю, что это необходимо. В настоящее время я не использую jQuery, но могу при необходимости.
нет потому что
window.stop()
не останавливает выполнение скрипта, останавливает загрузку окна, аналогично кнопке остановки браузера.
2
ответа
var flag = true;
function foo(){
if (flag){
// Do your magic here
...
...
setTimeout(foo, 100);
}
}
function stop(){
flag = false;
}
<input type="button" onclick="stop();" value="stop it!!!" />
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
setTimeout(foo)
Error: User Rate Limit ExceededsetTimeout(flag)
.
что вы пытаетесь приостановить, является функцией, которая в противном случае продолжала бы зацикливаться, я нашел хорошее решение:
HTML
<div id="stuff">Doing stuff</div>
<button id="pause">Pause/Resume</button>
JS
var paused = false;
document.getElementById('pause').addEventListener('click', function() {
paused = !paused;
if (!paused) {
next();
}
});
function doStuff() {
// Do whatever you want here, then invoke next() for the next iteration of that function, for example:
// (Note that the window.setTimeout is NOT part of the solution)
window.setTimeout(function() {
document.getElementById('stuff').append('.');
next();
}, 300);
}
function next() {
if (!paused) {
doStuff();
}
}
doStuff();
CodePen: https://codepen.io/liranh85/pen/baVqzY?editors=1010
Похожие вопросы
нет потому что<code>window.stop()</code> не останавливает выполнение скрипта, останавливает загрузку окна, аналогично кнопке остановки браузера.