Почему при повторном клике setTimeout начинает работать быстрее?
при многочисленных кликах setTimeout ускоряется как это исправить?
const btn = document.querySelector('.button');
const success = document.querySelector('.success');
btn.onclick = () => {
success.classList.add('success_active');
setTimeout(() => {
success.classList.remove('success_active');
}, 1000)
}
.success {
width: 200px;
padding: 25px;
background-color: #CEDDEC;
text-align: center;
opacity: 0;
visibilyti: hidden;
transition: 0.5s;
}
.success_active {
opacity: 1;
visibilyti: visible;
}
<div class="success"> Алерт </div>
<button class="button">Вызвать</button>
Ответы (1 шт):
Автор решения: vp_arth
→ Ссылка
const btn = document.querySelector('.button');
const success = document.querySelector('.success');
btn.onclick = () => {
if (btn.timeoutHandle) {
clearTimeout(btn.timeoutHandle);
}
success.classList.add('success_active');
btn.timeoutHandle = setTimeout(() => {
btn.timeoutHandle = null;
success.classList.remove('success_active');
}, 1000)
}
.success {
width: 200px;
padding: 25px;
background-color: #CEDDEC;
text-align: center;
opacity: 0;
visibilyti: hidden;
transition: 0.5s;
}
.success_active {
opacity: 1;
visibilyti: visible;
}
<div class="success"> Алерт </div>
<button class="button">Вызвать</button>