如何通过按下开始按钮使时钟滴答作响。如果我多次按“开始”按钮,时间将被更新,但我只需要每秒按一次即可更新时钟。目前不清楚为什么递归函数调用无法正常工作。
<!DOCTYPE HTML>
<html>
<body>
<input type="button" onclick="clock.clockStart()" value="Start">
<input type="button" onclick="clock.clockStop()" value="Stop">
<div class='clocks'>
<span class='hours'></span>
<span class='minutes'></span>
<span class='seconds'></span>
</div>
<script>
'use strict';
class Clock {
constructor() {
this.hh = document.querySelector('.hours');
this.mm = document.querySelector('.minutes');
this.ss = document.querySelector('.seconds');
}
clockStart() {
let self = this;
self.date = new Date();
self.timer = setTimeout(function tick1() {
self.hh.textContent = '' + self.date.getHours();
self.mm.textContent = ': ' + self.date.getMinutes();
self.ss.textContent = ': ' + self.date.getSeconds();
self.timer = setTimeout(tick1, 1000);
}, 1000);
}
clockStop() {
clearTimeout(this.timer);
}
}
let clock = new Clock();
</script>
</body>
</html>