자바에서 스톱워치를 만들었으므로 모든 기능을 성공적으로 구현했습니다. 그러나 타이머가 매 10 밀리 초마다 업데이트되기 때문에 Chrome 개발자 콘솔에서는 웹 페이지가 스톱워치 필드에 아무 것도 표시하지 않는 것으로 표시되어 다시 시간이 표시되면서 필드가 갑자기 깜박입니다.값을 자주 업데이트 할 때 깜박임
깜박임없는 정적 스톱워치를 어떻게 얻을 수 있는지 궁금합니다.
호스트 : http://folk.ntnu.no/nikolahe/assignment8/stopwatch.html
stopwatch.js
window.addEventListener("load", function(e){
var interval;
var state = 0;
var display = document.getElementById('display-area');
var offset;
var clock = 0;
function updateTimer() {
clock += delta();
var time = format(clock);
if (time != "") {
display.value = time;
}
}
function format(clock) {
var timer = new Date(clock);
var currentHours = timer.getHours()-1;
var currentMinutes = timer.getMinutes();
var currentSeconds = timer.getSeconds();
var currentMilliseconds = timer.getMilliseconds();
currentHours = (currentHours < 10 ? "0" : "") + currentHours;
currentMinutes = (currentMinutes < 10 ? "0" : "") + currentMinutes;
currentSeconds = (currentSeconds < 10 ? "0" : "") + currentSeconds;
currentMilliseconds = (currentMilliseconds < 100 ? "0" : "") + currentMilliseconds;
return currentHours + ":" + currentMinutes + ":" + currentSeconds + "." + currentMilliseconds;
}
function delta() {
var now = Date.now();
d = now - offset;
offset = now;
return d;
}
function toggle() {
console.log(state);
if (!interval) {
console.log("start");
offset = Date.now();
interval = setInterval(updateTimer, 10);
} else {
console.log("stop");
clearInterval(interval);
interval = null;
}
}
function reset() {
if(interval) {
toggle();
}
display.value = "00:00:00.000"
clock = 0;
}
document.getElementById('toggle-button').addEventListener("click", toggle);
document.getElementById('reset-button').addEventListener("click", reset);
})
stopwatch.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Stopwatch</title>
<script src="stopwatch.js"></script>
<style>
body { text-align: center; margin-top: 200px; font-family: courier;}
#display-area { font-size: 20pt; }
</style>
</head>
<body>
<div>
<output id="display-area">00:00:00.000</output>
</div>
<div>
<button id="toggle-button">Start/Stop</button>
<button id="reset-button">Reset</button>
</div>
</body>
</html>
을해야
interval-= 16; window.setTimeout(updateTimer, 16)
을 시도하십시오 아마 – towc는 사실 내가 콘솔에서 좀 더 일했다 관련된 무언가와 내 코드를 설정 (01, 05), (009, 014)와 같이 모든 경우에 후행 0을 추가하지 않았습니다. 그래서 이러한 경우에 후행 0을 수동으로 추가하는 코드를 추가했습니다. 완벽하게 나타났다! –
완벽! 그리고 '정답'에 대해 고마워. 내가 XD를 해본 건 아니지만. – towc