Я пытаюсь создать сценарий jquery, который отсчитывает с 20 секунд, когда вы вызываете функцию, а затем перезагружаетесь, когда она заканчивается. Есть ли способ сделать это?Сбой таймера обратного отсчета Jquery, когда функция называется
0
A
ответ
0
Это считается плохой практикой использования setInterval, так что лучше использовать SetTimeout так:
var timer = 20 * 1000;
function loop() {
if (timer > 0) {
$('#countdown').html(timer/1000);
timer -= 1000;
setTimeout(loop, 1000);
} else {
timer = 20 * 1000;
$('#countdown').html(timer/1000);
}
}
loop();
0
(function($){
/// initialize the variables
var interval,
$domElementThatContainsTheCountdown = $('.countdown'),
count = 20;
function start() {
/// if the timer is already running, do nothing
if(interval) return;
$domElementThatContainsTheCountdown.text(count);
/// set an interval on 1000ms (= 1 second)
setInterval(function() {
$domElementThatContainsTheCountdown.text(count);
count -= 1;
/// if the countdown has finished
if(count === 0) {
/// reset count
count = 20;
$domElementThatContainsTheCountdown.text(count);
/// clear the interval
clearInterval(interval);
}
}, 1000);
}
}(jQuery));
0
Попробуйте
var total = 20
var counter = 20
var timer = setInterval(function() {
$('#Msg').text(counter--);
if (counter == -1) {
//clearInterval(timer);
$('#Msg').text(total);
counter=20;
}
}, 1000);
This should work for below html
<span id="Msg">20</span>
0
попробовать следующий
var timeVar = '', max = 20, starter = 0;
$("#btnStart").on("click",function(){
timer();
});
function set(){
if(max != starter){
$(".timer").text((max).toString());
max--;
if(max == 0){
max = 20;
}
}
}
function timer(){
timeVar = setInterval(set,500);
}
рабочий скрипка здесь: http://jsfiddle.net/3KLtc/1/
Надеюсь, это поможет.
проверить документацию js для * setTimeout() * функция –
Пожалуйста, будьте более конкретным. Считайте, что? Внутренний или видимый счетчик? И что нужно сбросить? –
Прости, да. Видимый счетчик, отображаемый в пределах «#div span», и таймер должен быть сброшен, когда он закончил отсчет. –