2012-07-20 2 views
1

내가 "똑딱"을 "초"매개 변수에 넣을 때 을 제외하고을 제외하고 계속 시계를 사용하고 싶습니다. 내가 "휴식"을 할 때, 시계는 잠시 휴식을 취한 다음 계속 똑딱 거리고 있습니다. 나는 그것이 멈추지 않게하고 싶다. 나는 그 문제가 무엇인지 전혀 모른다. 레코드의 경우 페이지로드시이 함수를 호출하고 사용자가 페이지에서 요소를 클릭 할 때마다 호출합니다. 그들이 뭔가를 클릭하면 망가져 버립니다.재귀 시계 호출 내 노력에도 불구하고 똑딱?

var seconds; 

function countdown_clock(seconds) { 
    if (seconds != "break") { 
     countdown(seconds); 

     seconds = seconds; 
    } 
} 

function displaymessage() { 
    alert("Your Time Has Expired"); 
} 

function countdown(seconds) { 
    if (seconds != "break") { 
     Time_Left = seconds; 
     format = 1; 

     if (Time_Left < 0) 
      Time_Left = 0; 

     switch (format) { 
      case 0: 
       //The simplest way to display the time left. 
       $("div#ClockCountdown").html(Time_Left + ' seconds'); 
       break; 
      case 1: 
       //More detailed. 
       Next_time = Time_Left - 1; 
       minutes = Math.floor(Time_Left/60); 
       Time_Left %= 60; 
       seconds = Time_Left; 

       mps = 's'; 
       sps = 's'; 
       earlyzero = ''; 
       latezero = ''; 
       //ps is short for plural suffix. 

       if (minutes == 1) mps = ''; 
       if (seconds == 1) sps = ''; 
       if (seconds < 10) earlyzero = '0'; 
       //     if(seconds == 10) latezero ='0'; 

       //     document.all.countdown.innerHTML = minutes + ' minute' + mps + ' and '; 
       //     document.all.countdown.innerHTML += seconds + ' second' + sps; 

       innerHTML = minutes + ':'; 
       innerHTML += earlyzero + seconds; 
       $("div#ClockCountdown").html(innerHTML + "nonbroken!"); 
       break; 
      default: 
       $("div#ClockCountdown").html(Time_Left + ' seconds'); 
     } 

     if (Next_time == 0) { 
      displaymessage(); 
      window.location.href = "navigation.php?nav=video_timeout"; 
     } 
     else { 
      setTimeout('countdown(' + Next_time + ');', 1000); 
     } 
    } 
} 
+0

체크 아웃이 예제를 ... http://jsfiddle.net/Bs5Ze/ – canon

+0

@Karl 와이스 하 웁트을 수행해야 시간 제한을 지우십시오. break 명령을 내릴 때까지 이미'countdown' 함수가 대기열에서 대기 중이거나 실행되도록 예약 된 호출이있을 수 있습니다. 그리고 그 전화는 당신의 타임 아웃을 똑딱하게 할 것입니다. 따라서 시간 제한을 지우는 것이 좋습니다. – Tamil

답변

1

또한 시간 제한을 지워야합니다. 다음과 같이하십시오.

var timeout; 
function countdown(seconds) { 
    if (seconds == "break") { 
     clearTimeout(timeout); 
    } 
    // other things 
    if(Next_time == 0) { 
     displaymessage(); 
     window.location.href ="navigation.php?nav=video_timeout"; 
    } else { 
     timeout = setTimeout('countdown(' + Next_time + ');', 1000); 
    } 
} 
+0

하지만 초가 _ 깨진 시간과 같으면 시간 초과를 지우지 않습니까? – Ray

+0

어, 네 말이 맞아. 나는 어리석게도, 어떤 이유로 든'if (seconds! = "break")가 브레이크 논리라고 가정했다. –

+0

괜찮습니다. 실수가 발생합니다. – Ray

0

타임 아웃은 한 번만 수행되며 시간 초과 기능이 호출되면 지워집니다. ! 당신은 몇 초 경우 다음 제한 시간을 설정해야합니다 == '휴식'@arxanas 언급했듯이

if (Next_time == 0) { 
     displaymessage(); 
     window.location.href = "navigation.php?nav=video_timeout"; 
    } 
    else if (seconds !== 'break') { 
     setTimeout('countdown(' + Next_time + ');', 1000); 
    }