2017-03-23 24 views
1

JS 코드 (기본적으로 다른 곳에 붙여 넣은 사본)는 다소 효과가 있지만, 사용자가 "시작"버튼을 여러 번 클릭하면 시계의 속도가 각각 증가합니다. 버튼을 누릅니다. 자바 스크립트 - 기본 스톱워치를 여러 번 시작하여 시계 속도를 높일 수 있습니다. 솔루션?

var h1 = document.getElementsByTagName('h1')[0], 
 
    start = document.getElementById('start'), 
 
    stop = document.getElementById('stop'), 
 
    clear = document.getElementById('clear'), 
 
    seconds = 0, minutes = 0, 
 
    t; 
 

 
function add() { 
 
    seconds++; 
 
    if (seconds >= 60) { 
 
     seconds = 0; 
 
     minutes++; 
 
    } 
 
    h1.textContent = (minutes ? (minutes > 9 ? minutes : "0" + minutes) : "00") + ":" + (seconds > 9 ? seconds : "0" + seconds); 
 

 
    timer(); 
 
} 
 

 
function timer() { 
 
    t = setTimeout(add, 997.5); 
 
} 
 

 

 
/* Start button */ 
 
document.getElementById("start").onclick = timer; 
 

 
/* Stop button */ 
 
document.getElementById("stop").onclick = function() { 
 
    clearTimeout(t); 
 
} 
 

 
/* Clear button */ 
 
document.getElementById("clear").onclick = function() { 
 
    h1.textContent = "00:00"; 
 
    seconds = 0; minutes = 0; 
 
    clearTimeout(t); 
 
}

는 그래서 그래, 모든 입력은 좋은 것입니다. 타이머 기능으로 시작하는 정지 기능 ("clearTimeout (t)")을 만들려고했는데, 시작하기 전에 리셋했는지는 알 수 있지만 작동하지 않았습니다.

아이디어가 있으십니까? 당신은 아마 내가이 말을 처음 접한다고 말할 수 있습니다.

+0

로 여기 조각 –

+0

같은 현상에 오류가 : HTTP : // 유래. com/questions/27144619/javascript-multiple-intervals-and-clearinterval/27144669 # 27144669 –

+0

아마도 document.getElementById를 사용하고있어 오류가 발생했을 수 있습니까? 다른 생각은 없습니다. 여기에서 작동합니다. –

답변

1

제 제안은 매번 스톱워치가 시작되는지 확인하는 것입니다. 어느 현재 하나를 취소하고 새로 시작합니다

function timer() { 
    if (t) { 
     clearTimeout(t); 
    } 
    t = setTimeout(add, 997.5); 
} 

을 아니면 이미 시작 않다면 아무것도하지 않고 :

function timer() { 
    if (!t) { 
     t = setTimeout(add, 997.5); 
    } 
} 

document.getElementById("stop").onclick = function() { 
    clearTimeout(t); 
    t = null; 
}