Идущие часы на классах 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, время: 10:39. |