2011-11-06 2 views
2

버튼을 누르면 5에서 0으로 카운트 다운되는 자바 스크립트에서 간단한 타이머를 만들려고합니다. 이것은 내 버튼의 onclick에 대한 기능입니다. 나는 카운트 다운되지 않기 때문에 붙어있다. 내 논리가 잘못된 부분에 대한 암시가있을 것입니다. 감사. 문자열이 제대로 따라 num를 통과하지 않은으로자바에서 setTimout이있는 간단한 타이머

function countdown(num) { 
    if (num >= 0) { 
     document.getElementById("counter").innerHTML=num; 
     timer=setTimeout("countdown()", 1000); 
     num--; 
    } 
    else 
     clearTimeout(timer); 
} 

답변

6

가장 큰 문제는 countdown 당신의 평가입니다. 대신 함수 식을 사용해보십시오.

function countdown(num) { 
    if (num >= 0) { 
     document.getElementById("counter").innerHTML=num; 
     setTimeout(function() { countdown(num - 1) }, 1000); 
    } 
} 

는 추가적으로 clearTimeout 또는 글로벌 timer 값에 대한 필요가 없습니다.

+0

도는'timer' 변수 또는'납입이 필요하다? –

+0

@DougOwings은 둘 다 올바릅니다. 업데이트 될 것입니다 – JaredPar

+0

논리 오류가'num'으로 전달되지 않았습니다 만, 여기서 문자열을 사용하는 것은 허용됩니다 :'setTimeout ("countdown ("+ (num-1) + ")", 1000);' – Tim

1

어때?

button.onclick = function() { 
    var n = 5; 

    (function loop() { 
     label.textContent = n; 

     if (n > 0) { 
      n -= 1; 
      setTimeout(loop, 1000); 
     } 
    })(); 
}; 

라이브 데모 : -`, 올바른http://jsfiddle.net/YhBx6/1/

관련 문제