Нужна ли здесь return?
Написал код, который каждые 2 секунды вставляет html элемент поверх предыдущего.
Затем спрашивает остановить ли цикл.
Чувствую, что здесь в коде не хватает return, но где именно нужно разместить return?
let timer = setTimeout(function fun(){
main.innerHTML += main.innerHTML;
timer = setTimeout(fun, 2000);
let a = confirm('Остановить цикл?');
if(a == true){
clearTimeout(timer);
alert('Цикл остановлен');
}
},1000)
#main{
background: orange;
}
#home {
font-size: 2vmax;
margin-left: 50%;
}
<div id="main">
<div id="home">
Опа
</div>
</div>
Ответы (2 шт):
Автор решения: Listopad02
→ Ссылка
Return нужно поставить перед вызовом alert, а верхнее содержимое функции надо перенести вниз. JS:
let timer = setTimeout(function fun(){
let a = confirm('Остановить цикл?');
if(a === true){
clearTimeout(timer);
return alert('Цикл остановлен');
}
main.innerHTML += main.innerHTML;
timer = setTimeout(fun, 2000);
},1000)
CSS:
#main{
background: orange;
}
#home {
font-size: 2vmax;
margin-left: 50%;
}
HTML:
<div id="main">
<div id="home">
Опа
</div>
</div>
Автор решения: Алексей Шиманский
→ Ссылка
Вначале печать, потом вопрос (обратите внимание, тут setInterval, а не setTimeout)
let i = 0;
let timer = setInterval(function fun() {
main.innerHTML = i++;
let a = confirm('Остановить цикл?');
if (a == true) {
clearTimeout(timer);
alert('Цикл остановлен');
}
}, 1000)
#main {
background: orange;
}
#home {
font-size: 2vmax;
margin-left: 50%;
}
<div id="main">
<div id="home">
Опа
</div>
</div>
Вначале вопрос, потом печать:
let i = 0;
let timer = setInterval(function fun() {
let a = confirm('Остановить цикл?');
if (a == true) {
clearTimeout(timer);
alert('Цикл остановлен');
} else {
main.innerHTML = i++;
}
}, 1000)
#main {
background: orange;
}
#home {
font-size: 2vmax;
margin-left: 50%;
}
<div id="main">
<div id="home">
Опа
</div>
</div>
Никаких return нету ¯\_(ツ)_/¯