Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.04.2018, 11:35
Интересующийся
Отправить личное сообщение для goofy1337 Посмотреть профиль Найти все сообщения от goofy1337
 
Регистрация: 11.04.2018
Сообщений: 10

Идущие часы на классах 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;
}


Заранее благодарю.
Ответить с цитированием
  #2 (permalink)  
Старый 12.04.2018, 11:54
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,730

Не за что
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, 12.04.2018 в 12:15.
Ответить с цитированием
  #3 (permalink)  
Старый 12.04.2018, 12:12
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Nexus,
var t = setTimeout('new startTime()', 500);
Ответить с цитированием
  #4 (permalink)  
Старый 12.04.2018, 12:14
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,730

Dilettante_Pro, в коде, в общем-то, вообще непонятно зачем переменная "t".
Ответить с цитированием
  #5 (permalink)  
Старый 12.04.2018, 12:34
Интересующийся
Отправить личное сообщение для goofy1337 Посмотреть профиль Найти все сообщения от goofy1337
 
Регистрация: 11.04.2018
Сообщений: 10

Спасибо большое
Ответить с цитированием
  #6 (permalink)  
Старый 12.04.2018, 12:45
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

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, 12.04.2018 в 12:50.
Ответить с цитированием
  #7 (permalink)  
Старый 12.04.2018, 12:49
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,730

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>
Ответить с цитированием
  #8 (permalink)  
Старый 12.04.2018, 12:52
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Nexus,
Теперь еще нужно стартовать после останова.
Ответить с цитированием
  #9 (permalink)  
Старый 12.04.2018, 13:02
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,730

Dilettante_Pro, метод "count" переименовать в "start"
Ответить с цитированием
  #10 (permalink)  
Старый 12.04.2018, 13:23
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сообщение от Nexus
метод "count" переименовать в "start"
ну тут уже вопрос концепции - как должны стартовать часы после останова.
В таком варианте они начинают отсчитывать текущее время, как если и не останавливались.
А м.б. надо продолжить отсчет со значения при останове?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Часы на javascript Qweqwerty Общие вопросы Javascript 3 12.01.2019 09:20
Обратно идущие часы до конца дня tenebrosus Общие вопросы Javascript 14 29.11.2015 03:04
Часы сервера на javascript и php NexXT Общие вопросы Javascript 3 14.03.2013 15:05
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34