Часы Javascript. ожидаемый результат: отображение даты и времени. проблема: не отображается
[Отображение часов / времени в верхнем левом углу] [1]
Этот код должен вставить время в div со значением идентификатора 'time'. Есть функция setTimeout, которая, как я подозреваю, используется неправильно. Моя проблема в том, что время не отображается. Я что-то упускаю, потому что время не показывает. Пожалуйста, помогите мне это исправить.
<script>
var dayArray= ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
var monthArray= ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
function getTime() {
var today = newDate();
var h = today.getHours();
var m = today.getMinutes();
var s = today.getSeconds();
var d = dayArray[today.getDay()];
var mo = monthArray[today.getMonth()];
var y = today.getFullYear();
var mm = correctDigit(m);
var ss = correctDigit(s);
document.getElementById('time')
.innerHTML = "<br><h1 class='large'>"+h+":"+mm+":"+ss+"</h1> <span class='dark'>"+d+",</span> <span class='dark'>"+mo+"</span> <span class='dark'>"+y+"</span>";
var t = setTimeout (function() {
getTime();
}, 1000);
function correctDigit(i){
if (i < 10){
i = "0" + i;
}
return i;
};
};
</script>
</head>
<body onload = "getTime()" class = "color-4">
<section>
<div class='time color-0' id = "time"></div>
я знаю спасибо. это было редактирование, которое я сделал. Эдисон :)
похоже, вы стерли весь свой код ...
Есть ли код для ответа на этот вопрос?
@AnonymousSB раньше был ... проверьте историю ревизий
@Gray, пожалуйста, верните свой исходный код, чтобы будущие посетители поняли вопрос.
Хорошо. Я положил обратно.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я исправил вашу непосредственную проблему,
bodyonload для вызова функции, которую вы хотите запустить, getTime()new и Date в var today = newDate().Календарь теперь добавляется в DOM и обновляется каждую секунду, но в логике вашего календаря все еще есть некоторые проблемы. (Подсказка: это работает, когда минуты и секунды меньше 10; поскольку это не было основной частью вашего вопроса, я оставляю его как упражнение, чтобы вы сами исправили его - так вы учитесь!)
<script>
var dayArray= ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
var monthArray= ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
function getTime() {
var today = new Date();
var h = today.getHours();
var m = today.getMinutes();
var s = today.getSeconds();
var d = dayArray[today.getDay()];
var mo = monthArray[today.getMonth()];
var y = today.getFullYear();
m = correctDigit(m);
s = correctDigit(s);
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>";
setTimeout (function() {
getTime();
}, 1000);
function correctDigit(i){
if (i < 10){
i = "0" + i;
return i;
}
};
};
</script>
</head>
<body onload = "getTime()" class = "color-4">
<section>
<div class='time color-0' id = "time"></div>
<div>
<div class = "news scroll color-1">
<ul>
<li class = "ellipsis"><h4 class = "dark"><i class = "fa fa-newspaper-o"></i> Title 1</h4><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit,</p></li>
<li class = "ellipsis"><h4 class = "dark"><i class = "fa fa-newspaper-o"></i> Title 2</h4><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit,</p></li>
<li class = "ellipsis"><h4 class = "dark"><i class = "fa fa-newspaper-o"></i> Title 3</h4><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit,</p></li>
<li class = "ellipsis"><h4 class = "dark"><i class = "fa fa-newspaper-o"></i> Title 4</h4><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit,</p></li>
</ul>
</div>Спасибо, nvioli. Я был слеп к ошибке: new Date (); хахаха, я такой зеленый. Ты очень хороший. Вы оба.
Здорово! Если я исправил вашу проблему, нажмите галочку, чтобы принять мой ответ (p.s., если у вас была открыта консоль или даже в представлении фрагмента SO, об этой ошибке было сообщено; вот как я ее нашел)
Я только что понял, что думаю, пока вы отправляли ответ. Мне нужно больше практиковаться.
Вот рабочий рабочий пример с некоторыми заметными отличиями.
setTimeout вне функции getTimesetInterval вместо setTimeoutString.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>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>Это улучшение. Спасибо AnonymousSB.
onload = "t"не имеет смысла ... это должно быть имя функции, а не переменная вне области видимости. попробуйтеonload = "getTime()"вместо