2012-01-14 3 views
1

좋아, 그래서 자바 스크립트에서 수행 카운트 다운에 대한 텍스트를 변경하려고하는 페이지에 버튼이 있습니다. 나는이 언어에 상당히 익숙하며 (2 일), 코드에 무엇이 잘못되어 있는지 확신 할 수 없다. 다시 반복하기 전에 전체 초를 기다리는 대신 즉시 다시 반복합니다.UserScript 타이머 오류

var c = 15; 
function countDown(e){ 
    if (c!=0){ 
    e.value = 'Reply (' + c + ')'; 
    c--; 
    setTimeout(countdown(e),1000); 
    } 
    else{ 
    e.value = 'Reply'} 
    } 
} 

하지만 대신에 내가 가정처럼 15 초 복용, 그것은

(제가 버튼 텍스트 변화를 볼 수있는 if 문에 alert('a');에 추가하여 검증) 한 번에 떨어져 화재 것으로 보인다 Greasemonkey에 문제가 있거나 자바 스크립트에 문제가 있는지 확실하지 않습니다.

+0

각 행의 앞에 4 개의 공백을 붙이거나 백틱으로 둘러 쌀 수 있습니다. – mrtsherman

+0

죄송합니다. 여기에 코드를 게시하는 것이 처음입니다. – user871154

+0

빈번한 중복! –

답변

3

귀하의 문제는이 라인이다 :

setTimeout(countdown(e),1000); 

countdown(e) 무효 반환 카운트 다운 함수를 호출합니다. 의 setTimeout 함수는 함수 참조 및 시간 제한을 받아, 그래서 당신은 그것을 변경해야 재귀 다음

현재 코드가 카운트 다운을 호출
setTimeout(countdown, 1000); 

(E) (1000 무효)의 setTimeout을 15 번;

함수에 인수 (예 : e)를 전달하려면 setTimeout이 필요하면 시간 초과 후 선택적 매개 변수를 사용할 수 있습니다.

setTimeout(countdown, 1000, e); 
+1

@ user871154, 이것을 시도해 볼 수 있습니다. [here] (http://jsfiddle.net/3UpG6/1/). – PrimosK

+0

죄송합니다, 아주 아주 썩 좋았습니다. 이것은이 초보자를 도와 준 덕분에 완벽하게 작동합니다. – user871154