Вот рабочий рабочий пример с некоторыми заметными отличиями.
- Я поставил
setTimeout
вне функции getTime
- Я использовал
setInterval
вместо setTimeout
- Я использовал JavaScript
String.padStart()
, чтобы заполнить недостающие 0
Что касается setInterval
, вы можете присвоить это переменной и вызвать clearInterval(variableName)
, если вы хотитеостанови часы.Присвоение setTimeout
переменной ничего не делает для вас.
Если вы хотите увидеть намного более простую реализацию с помощью momentJS, ознакомьтесь с демонстрацией внизу
var dayArray = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
monthArray = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
function getTime() {
var today = new Date(),
h = today.getHours(),
m = today.getMinutes().toString().padStart(2, '0'),
s = today.getSeconds().toString().padStart(2, '0'),
d = dayArray[today.getDay()],
mo = monthArray[today.getMonth()],
y = today.getFullYear();
document.getElementById('time').innerHTML =
`<br>` +
`<h1 class='large'>${h}:${m}:${s}</h1> ` +
`<span class='dark'>${d},</span> ` +
`<span class='dark'>${mo}</span> ` +
`<span class='dark'>${y}</span>`;
};
setInterval (function() {
getTime();
}, 1000);
<div id="time"><div>
Бонус (с помощью momentJS)
function getTime() {
var today = moment(),
time = today.format('HH:mm:ss'),
date = today.format('dddd, MMMM, YYYY');
document.getElementById('time').innerHTML =
`<br>` +
`<h1 class='large'>${time}</h1>` +
`<span class='dark'>${date}</span>`
};
setInterval (function() {
getTime();
}, 1000);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
<div id="time"></div>