이 다른 카운트 다운 전에 사항 clearInterval을 호출되면, onclick을 외부에서 실행되는 하나의 정의 및 타이머의 추적 할 수있는 플래그를 설정하고,이 두 가지 솔루션이 있습니다 이미 실행중인 카운트 다운을 중지하십시오.
해결책 1 : 타이머가 실행 중인지 여부를 나타내는 플래그.
var count = 10,
startcounter = document.getElementById("stercount"),
running;
startcounter.onclick = function() {
if (running)
return;
running = true;
countdown = setInterval(function(){
document.getElementById("countdown").innerHTML = count + " seconds remaining!";
if (count <= 0) {
clearInterval(countdown);
document.getElementById("countdown").innerHTML = "Done!";
}
count--;
}, 1000);
};
해결 방법 2 : 을 시작하기 전에 clearInterval
와 타이머를 중지.
var count = 10,
startcounter = document.getElementById("stercount");
startcounter.onclick = function() {
clearInterval(countdown);
countdown = setInterval(function(){
document.getElementById("countdown").innerHTML = count + " seconds remaining!";
if (count <= 0) {
clearInterval(countdown);
document.getElementById("countdown").innerHTML = "Done!";
}
count--;
}, 1000);
};
3 해결 방법 : 당신은 당신의 깃발로 countdown
을 사용할 수 있습니다 ,하지만 그래서 당신이 당신이 명확마다 null로 설정되어 있는지 확인해야 할 때. 이것은 기본적으로 솔루션 1과 동일합니다.
편집 : 당신의 카운트 다운-DIV 카운트 다운 - 세계를 채울 것이기 때문에 당신이 온 클릭 위의 바르 목록에 countdown
를 정의하지 않는 경우이 실제로 작동하지 않을 수 있습니다.
var count = 10,
startcounter = document.getElementById("stercount");
startcounter.onclick = function() {
if (countdown)
return;
countdown = setInterval(function(){
document.getElementById("countdown").innerHTML = count + " seconds remaining!";
if (count <= 0) {
clearInterval(countdown);
countdown = null;
document.getElementById("countdown").innerHTML = "Done!";
}
count--;
}, 1000);
};
ps. 코드 상단에있는 vars에 카운트 다운을 정의하는 것을 잊었습니까? 아니면 카운트 다운이 다른 곳에서 정의 되었습니까? 현재는 전역 코드이며 다른 모든 코드 (예 : 라이브러리)가이를 덮어 쓸 수 있습니다.
정지를 추가하고 시작을 중지하면 더 이상 작동하지 않습니다. jsfiddle http://jsfiddle.net/StWXk/7/ –
@ mr10 참조 - 타이머가 일시 중지되면 함수의 이름을 지정하고 클릭 핸들러를 다시 바인딩하십시오. – gilly3
@ Mr.1.0 - http://jsfiddle.net/StWXk/8/ – gilly3