2013-10-10 2 views
0

와 자바 스크립트 함수를 호출하면 사람이 내 왜이 타이머를 말할 수 :온 클릭

function timer() { 
var counter = 0, 
cDisplay = document.getElementById("counter"); 
format = function(t) { 
    var hours = Math.floor(t/360000), 
     minutes = Math.floor((t/6000) % 60), 
     seconds = Math.floor((t/100) % 60), 
     ms = (Math.floor(t % 100)/100).toFixed(2); 
    if (t<6000) { 
     cDisplay.innerHTML = seconds + ms.substring(1); 
    } else if (t<360000) { 
     seconds = (seconds < 10) ? "0" + seconds.toString() : seconds.toString(); 
     cDisplay.innerHTML = minutes + ":" + seconds + ms.substring(1); 
    } else { 
     minutes = (minutes < 10) ? "0" + minutes.toString() : minutes.toString(); 
     seconds = (seconds < 10) ? "0" + seconds.toString() : seconds.toString(); 
     cDisplay.innerHTML = hours + ":" + minutes + ":" + seconds + ms.substring(1); 
    } 
}; 
setInterval(function() { 
    counter++; 
    format(counter); 
},10); 
} 

나는이 라벨을 클릭하면 시작되지 않습니다 :

<label onClick="timer()" id="counter">Start Timer</label> 

내가 그것을 던져 자동으로로드 할 수 있습니다 전체 함수를 괄호로 묶고 다음과 같이 끝에 세미 콜론을 두 드리십시오.

하지만 onClick = "timer()"로로드되지 않는 이유를 알 수 없습니다. 나는 그것이 정말로 분명한 것처럼 느낀다. 나는 실종되었다. 그러나 나는 그것을 볼 수 없다.

+0

어쩌면 onclick을 대신 온 클릭의 –

답변

3

그것은 작동하고있다. jsfiddle이 onLoad에서에 스크립트를 포함하는 방법

변경 No wrap - in <head>

데모 : http://jsfiddle.net/UHjas/3/ 기본적으로 timer()

아니었다 전역 범위 (확인 jsfiddle은 iframe 소스)에서 당신이 내부의 함수를 정의하기 때문이다

+0

감사합니다! 이제 완벽하게 작동합니다. 전에 jsfiddle에서이 옵션을 사용하지 않아도되었습니다. – GlassHalfAwesome

1

load 이벤트이므로 해당 범위에서만 사용할 수 있습니다.

전역 범위에서 기능을 정의하려면 설정을 No wrap - in <head>으로 변경하십시오.

http://jsfiddle.net/UHjas/1/