2013-04-10 2 views
4

키즈 우드의 jQuery 카운트 다운 타이머를 사용하고 있습니다. http://keith-wood.name/countdown.htmljQuery 카운트 다운이 일시 중지되었을 때 실행 중입니다.

이 무엇을 달성하고자하는 정지로 카운트 업하고 버튼을 재개하고, 추가하고 분, 초 빼기 컨트롤 : 나는 카운트 업 (0 ~ 60 분)을 작성

을하여 바로 일시 정지, like :

$('#contador_tiempo').countdown({ 
    since: 0, 
    format: 'MS', 
    layout: '{mnn}{sep}{snn}' 
}); 

$('#contador_tiempo').countdown('pause'); 

하지만 여전히 백그라운드에서 실행중인 것으로 보입니다. 더하기 또는 빼기 단추를 클릭하면 함수는 표시된 카운터가 아닌 해당 배경 카운터의 연산을 수행합니다. 동작과 JSFiddle에

전체 코드는 복제 :

http://jsfiddle.net/J2XHm/4/

합니다 (컨트롤 비트를 재생하고 당신이 그것을 일시 정지 비록 카운트를 계속 것을 볼 수 있습니다.)

+0

'pause'와 (과) 같이 보이는 getTimes는 서로 연주되지 않습니다. 'getTimes'는 지속적으로 업데이트를 계속하는 것 같습니다. 클릭 이벤트 중 하나에서 모든 코드를 제거하고'$ ('contador_tiempo'). 카운트 다운 ('getTimes') 만 추가하면 숫자 배열이 시작시 일시 중지 되더라도 계속 증가하는 것을 볼 수 있습니다. 버그 일 수 있습니다. '일시 중지'에 대한 문서에는 '카운트 다운이 일시 중지 된 동안 onTick 또는 onExpiry 이벤트가 발생하지 않습니다.'라고 표시되어있어 언제든지 계산해서는 안됩니다. 나는 그 정보를 얻기 위해 플러그인 작성자에게 연락 할 것이다. – Nope

+0

추가하기 만하면 SO 또는 최소한 동시에 요청하기 전에 먼저 플러그인 작성자에게 문의해야합니다. SO에 대한 해결 방법을 얻을 수도 있지만 작성자가 잘못된 것을 지적하거나 버그가 지적되고 버그를 지적 할 수 있습니다. 해커가 해결 방법을 찾지 않고 해결할 수 있습니다. – Nope

+1

나는이 질문이있는 이메일을 보냈습니다. 이 문제를 해결할 수 있기를 바랍니다. 감사. – Deses

답변

1

네, 'getTimes'명령의 버그입니다. 일시 중지되면 다시 계산됩니다. 나는 다음 버전 (1.6.2)에서 보정을 할 수 있습니다하지만 그 동안 당신은 _getTimesPlugin 기능을 변경할 수 있습니다 : 당신이 jQuery를 카운트 다운 타이머를 사용하지 않고 즉, 경량 코드를 받아 들일 수없는 경우 다음을

_getTimesPlugin: function(target) { 
    var inst = $.data(target, this.propertyName); 
    return (!inst ? null : (inst._hold == 'pause' ? inst._savePeriods : (!inst._hold ? inst._periods : 
     this._calculatePeriods(inst, inst._show, inst.options.significant, new Date())))); 
}, 
+0

완벽하게 작동합니다! 고맙습니다. – Deses

0

을 도울 수 있습니다 :

<!DOCTYPE html> 
<html> 
<head> 
<title></title> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<script type="text/javascript" src="http://localhost/web/JavaScript/jQuery/jquery"></script> 
<script type="text/javascript"> 
    var countUpSeconds = 0; 
    var interval = null; 
    function displayTime() { 
      $("#timeContainer").text(format(Math.floor(countUpSeconds/60))+":"+format(countUpSeconds%60)); 
    } 
    function playStop() { 
     if(interval) {interval=window.clearInterval(interval);} 
     else {interval = window.setInterval(countUp, 1000);} 
    } 
    function countUp() { 
     ++countUpSeconds; 
     if(countUpSeconds >= 3600) {/* do something when countup is reached*/} 
     displayTime(); 
    } 
    function format(s) {return s<10 ? "0"+s : s;} 
    $(function() { 
     displayTime(); 
     $("#playStop").on("click", function() { playStop(); }); 
     $("#addMin").on("click", function() { countUpSeconds += 60; displayTime(); }); 
     $("#subMin").on("click", function() { countUpSeconds = Math.max(0, countUpSeconds-60); displayTime(); }); 
     $("#addSec").on("click", function() { countUpSeconds += 1; displayTime(); }); 
     $("#subSec").on("click", function() { countUpSeconds = Math.max(0, countUpSeconds-1); displayTime(); }); 

    }); 
</script> 
</head> 
<body> 
<div id="timeContainer"></div> 
<button id="playStop">Play/Stop</button> 
<button id="addMin">+1 minute</button> 
<button id="subMin">-1 minute</button> 
<button id="addSec">+1 second</button> 
<button id="subSec">-1 second</button> 
</body> 
</html>