2016-08-26 5 views
1

Здесь у меня есть сценарий обратного отсчета.Как увеличить setInterval таймер в цикле

Уменьшает число после 1 секунды. То, что я хочу создать, это цикл, в котором он увеличивает время setInterval при уменьшении числа.

Например, он показывает 9 копий, оставшихся после 1 секунды, затем 8 копий, оставшихся после примерно 5 секунд, затем 7 копий, оставшихся после 15 секунд и так далее, пока не достигнет одного.

var count=10; 
var counter=setInterval(timer, 1000); 

function timer() 
{ 
    count=count-1; 
    if (count <= 0) 
    { 
    clearInterval(counter); 
    //counter ended, do something here 
    return; 
    } 

    document.getElementById("timer").innerHTML="Only " + count + " copies left! Hurry up!"; 
} 

Вот мой код: jsfiddle

+1

Вы используете неправильную функцию. Используйте 'setTimeout'. – Amit

ответ

0

Я уверен, что есть аккуратнее способ сделать это, но этот код добивается того, чего вы хотите сделать (обновленную ссылку скрипки в нижней части):

var count = 10; 
 
var interval = 1000; 
 
iterator(); 
 

 
function iterator() { 
 
    document.getElementById("timer").innerHTML="Only " + count + " copies left! Hurry up!"; 
 
    document.getElementById("interval").innerHTML="Timeout Interval: " + interval + "ms"; 
 
    count -= 1; 
 
    interval += 1000; 
 
    if(count>0) { 
 
    setTimeout(iterator, interval); 
 
    } 
 
}
<p id="timer"></p> 
 
<p id="interval"></p>

Updated Fiddle

+0

Как я могу создать, чтобы выбрать следующий интервал? Это увеличивается только на 1 секунду каждый раз. –

+0

Как именно вы хотите выбрать следующий интервал? По пользовательскому вводу? – awenborn

+0

С массивом. Я пытался создать что-то, но не работал должным образом. https://jsfiddle.net/zhes4mbg/1/ –

Смежные вопросы