Идущие часы на классах Javascript
Добрый день, у меня есть код идущих часов с помощью функций. Не мог бы кто-то помочь переделать его с помощью классов?
function startTime() {
var date = new Date();
var h = date.getHours();
var m = date.getMinutes();
var s = date.getSeconds();
m = checkTime(m);
s = checkTime(s);
document.getElementById('clock').innerHTML = h + ":" + m + ":" + s;
t = setTimeout('startTime()', 500);
}
function checkTime(i) {
if (i < 10) i = "0" + i;
return i;
}
Заранее благодарю. |
Не за что :)
class startTime {
constructor(){
this.count();
}
count(){
var date = new Date();
var h = date.getHours();
var m = date.getMinutes();
var s = date.getSeconds();
m = this.checkTime(m);
s = this.checkTime(s);
document.getElementById('clock').innerHTML = h + ":" + m + ":" + s;
setTimeout(this.count.bind(this), 500);
}
checkTime(i) {
if (i < 10) i = "0" + i;
return i;
}
}
var Clock=new startTime();
|
Nexus,
var t = setTimeout('new startTime()', 500); |
Dilettante_Pro, в коде, в общем-то, вообще непонятно зачем переменная "t".
|
Спасибо большое :) :D
|
t можно использовать для останова часов
<div id = 'clock'></div>
<button id='stop'>Stop</button>
<script>
var t;
document.getElementById('stop').onclick = function() {
clearTimeout(t);
};
class startTime {
constructor(){
this.count();
}
count(){
var date = new Date();
var h = date.getHours();
var m = date.getMinutes();
var s = date.getSeconds();
m = this.checkTime(m);
s = this.checkTime(s);
document.getElementById('clock').innerHTML = h + ":" + m + ":" + s;
t = setTimeout(this.count.bind(this), 500);
}
checkTime(i) {
if (i < 10) i = "0" + i;
return i;
}
}
var Clock=new startTime();
</script>
|
Dilettante_Pro, думаю раз основной функционал у нас является классом, то и останавливать часы нужно через обращение к методу.
<div id = 'clock'></div>
<button id='stop'>Stop</button>
<script>
class startTime {
constructor(){
this.t=0;
this.count();
}
count(){
var date = new Date();
var h = date.getHours();
var m = date.getMinutes();
var s = date.getSeconds();
m = this.checkTime(m);
s = this.checkTime(s);
document.getElementById('clock').innerHTML = h + ":" + m + ":" + s;
this.t = setTimeout(this.count.bind(this), 500);
}
checkTime(i) {
if (i < 10) i = "0" + i;
return i;
}
stop(){
clearTimeout(this.t);
}
}
var Clock=new startTime();
document.getElementById('stop').onclick = function() {
Clock.stop();
};
</script>
|
Nexus,
Теперь еще нужно стартовать после останова.:) |
Dilettante_Pro, метод "count" переименовать в "start" :)
|
Цитата:
В таком варианте они начинают отсчитывать текущее время, как если и не останавливались. А м.б. надо продолжить отсчет со значения при останове? |
| Часовой пояс GMT +3, время: 09:48. |