2015-02-24 2 views
2

У меня есть это countDown, каждый раз, когда я нажимаю кнопки, я хочу добавить еще 5 секунд.setInterval countDown время обновления

Когда время обновляется, функция отсчитывает новое значение, но также и старое значение.

Может кто-нибудь объяснить мне, почему?

http://jsfiddle.net/xqdj3uz8/1/

$('button').on('click', function() { 
    var newtime = parseInt(seconds + 5); 
    timer(newtime);  
}); 
+1

http://jsfiddle.net/xqdj3uz8/3/ – kuba

ответ

1

Вы можете попробовать с помощью глобальной переменной для отслеживания количества секунд до конца. Нажатие на кнопку увеличивает эту переменную.

var timeLeft = 10; 

function timer() { 
    var i = setInterval(function() { 
     $('span').text(timeLeft); 
     timeLeft-- 
     if (timeLeft === 0) clearInterval(i) 
    }, 1000) 
} 

function addSeconds(n) { 
    timeLeft += n 
} 

timer() 

$('button').on('click', function() { 
    addSeconds(5) 
}); 

Demo (1): http://jsfiddle.net/xqdj3uz8/21/

1

, пожалуйста, используйте его

function timer(time) { 
    var interval = setInterval(countDown, 1000);  
    function countDown() { 
     time--; 
     $('span').text(time); 

     if(time === 0) { 
      clearInterval(interval); 
     } 

    }  



    $('button').on('click', function() { 

     time=parseInt(time + 5); 
     $('span').text(time); 

    }); 
} 

var seconds = 5; 
timer(seconds); 
1

Try This

Working JSFIDDLE

var gblTime=0; 
function timer(time) { 
    var interval = setInterval(countDown, 1000); 
    gblTime = time; 
    function countDown() { 
     gblTime--; 
     $('span').text(gblTime); 

     if(gblTime <= 0) { 
      clearInterval(interval); 
     } 

    }   
} 

var seconds = 5; 
timer(seconds); 

$('button').on('click', function() { 

    gblTime = parseInt(gblTime +1+ 5); 
    //timer(newtime);  
}); 
+0

@Marius - см. Вышеупомянутую ссылку JSFIDDLE - она ​​работает – prog1011

-1

Вы добавляете новые интервалы, которые являются независимыми друг у друга, попробуйте:

var time = 5; 
var seconds = 5; 

function timer() { 
    var interval = setInterval(countDown, 1000);  
    function countDown() { 

    $('span').text(time); 
    if(time === 0) { 
     clearInterval(interval); 
    } 
    time--;   
    }   
} 

timer(); 

$('button').on('click', function() { 
    if(time==0){ 
    timer(); 
    } 
    time += seconds; 
}); 
Смежные вопросы