Таймер отключается только когда выходит время, а если нажать кнопку то запустится уже новый таймер, и предыдущий тоже будет работать
$(".next").click(function () {
const secondsToAnswer = 10; // Количество секунд для ответа
let timeLeft = secondsToAnswer;
var startTimer = function(){
const timer = setInterval(function(){
if (timeLeft > 0) { // На последней секунде
$('.timer').text(timeLeft + ' сек');
timeLeft--;
} else {
$('.timer').text(0 + ' сек');
clearInterval(timer);
$('#next').click();
}
}, 1000);
return timer;
}
//запуск таймера
startTimer();
});
Потому что при каждом вызове у вас создаётся новая переменная timer, создаётся новая функция которая присваивается ей и с setInterval происходит совершенно аналогичная история.
Для большего понимания почитайте про замыкания
Для данной ситуации, решением может быть такое:
$(".next").click(function() {
const secondsToAnswer = 10; // Количество секунд для ответа
let timeLeft = secondsToAnswer;
clearInterval(this.timer);
this.timer = setInterval(function() {
if (timeLeft > 0) { // На последней секунде
$('.timer').text(timeLeft + ' сек');
timeLeft--;
} else {
$('.timer').text(0 + ' сек');
$('#next').click();
}
}, 1000);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="timer">0</div>
<button class="next">next</button>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть массив, который при некотором условии должен подгружаться извнеЕсть необходимость в конце вызвать getScript(), в котором этот массив должен...
Создаю модальное окно с полноразмерным изображением, однако есть ошибка, при клике на превью появляется модалка, затем сразу же удаляется,...