#javascript #html #datetime
#javascript #HTML #дата и время
Вопрос:
//<![CDATA[
var displayCurrentTime = new function() {
// Get values...
var sysHour = getHours(); // Get Hours
var curHour = 0; // Initialize current hour (12 hr format)
var morningEvening = "AM"; // Initialize AM/PM notation
if (sysHour < 13) { // If it's in the morning, set time as is.
curHour = sysHour;
morningEvening = "AM"
} else {
curHour = sysHour - 12; // If it's in the evening, subtract 12 from the value and use "PM"
morningEvening = "PM"
}
var curMins: getMinutes; // Get current minutes...
// Capture the ID of the notification bar div, and compose a string from the above values.
var notificationBar = document.getElementById("notificationBar");
var dateTimeString = curHour ":" curMins " " morningEvening;
// All that code above files into this fun stuff.
notificationBar.innerHTML = dateTimeString;
}
window.setInterval(function() {
displayCurrentTime();
}, 1000);
//]]>
Я читал некоторую информацию, и я хотел создать простой скрипт, который захватывает час и минуту, выполняет некоторые вычисления, чтобы определить, является ли это AM или PM, создает строковую переменную из этих результатов, а затем помещает ее внутрь определенного элемента DIV. Это происходит каждую секунду.
Большая часть кода, который я написал, кажется, имеет смысл, основываясь на том, что я прочитал. Вначале я пытался использовать функцию displayCurrentTime () {}, а также то, что вы видите ниже (var displayCurrentTime = new function() {}), и, похоже, ни то, ни другое не работает. Я не могу заставить свой текст отображаться на странице. Примечание: идентификатор div — это NotificationBar, как и здесь.
Есть ли в этом коде что-нибудь, что не имеет смысла, или это действительно требует публикации полного HTML?
Комментарии:
1.
new function
? Удалитеnew
. Также:var curMins: getMinutes;
недопустимый синтаксис. Используйте=
. Проверьте консоль. Должно появиться сообщение об ошибке.2. в вашем коде немного синтаксических ошибок. Кроме того,
getHours()
иgetMinutes()
являются методами, которые являются частьюDate
объекта.3. var curMins = getMinutes(); Используйте знак равенства и, getMinutes — это функция, которую вы забыли добавить () в конце.
Ответ №1:
Вам не нужно new
перед функцией, которую вы определяете заново, вы не создаете экземпляр класса.
У вас несколько синтаксических ошибок, например, var curMins : ...
вместо var curMins = ...
.
Кроме того, вы не можете использовать методы getHours()
и getMinutes()
вне Date
объекта:
var displayCurrentTime = function() {
// Get values...
var d = new Date();
var sysHour = d.getHours(); // Get Hours
var curHour = 0; // Initialize current hour (12 hr format)
var morningEvening = "AM"; // Initialize AM/PM notation
if (sysHour < 13) { // If it's in the morning, set time as is.
curHour = sysHour;
morningEvening = "AM"
} else {
curHour = sysHour - 12; // If it's in the evening, subtract 12 from the value and use "PM"
morningEvening = "PM"
}
var curMins = d.getMinutes(); // Get current minutes...
var curSecs = d.getSeconds(); //optionally get seconds too
// Capture the ID of the notification bar div, and compose a string from the above values.
var notificationBar = document.getElementById("notificationBar");
var dateTimeString = curHour ":" curMins ":" curSecs " " morningEvening;
// All that code above files into this fun stuff.
notificationBar.innerHTML = dateTimeString;
}
window.setInterval(function(){ displayCurrentTime(); }, 1000);
<div id='notificationBar'>
Time Here
</div>
Смотрите об объекте Date:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
О функциях и выражении анонимной функции:
Также:
https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Howto
Комментарии:
1. Моя единственная проблема здесь сейчас заключается в том, что, похоже, он не обновляется автоматически. Я вижу, что значения меньше 10 отображают только одну цифру (я исправлю это достаточно легко), но, тем не менее, как мне заставить его фактически обновиться? Кажется, код внизу для автоматического запуска не работает? Выполняю ли я самозапускающуюся функцию (или какой-то другой правильный термин, я просто забыл)
2. @Anthony, он запущен автоматически, вы установили интервал, но имейте в виду, что изменения видны только после изменения каждой минуты, независимо от интервала. Попробуйте добавить секунды с помощью
d.getSeconds()
, и вы увидите, что это изменится3. @Anthony, я добавил секунды в свой отредактированный пример, чтобы вы могли видеть обновления
4. Таким образом, он не обновлялся. Это работает только тогда, когда я перезагружаю страницу вручную… window.setInterval(displayCurrentTime(), 1000); это код, который у меня есть после внесения изменений из других предложений… любые другие необходимые изменения
5. @Anthony, ты запускал фрагмент кода? Это должно сработать. Странно
Ответ №2:
В вашей функции есть несколько синтаксических ошибок, я разберусь с ними одна за другой:
- Вы не должны использовать
new
при объявлении функции. Просто отбросьте его =)var displayCurrentTime = function() {
- Вы пытаетесь присвоить значение переменной, используя синтаксис json
:
вvar minutes: getMinutes
. Вы также забыли выполнить функцию, поэтому попробуйтеvar minutes = getMinutes();
- В (2) Я предполагаю, что вы уже объявили методы
getHours
иgetMinutes
, но если нет, вы можете вызвать их непосредственно из новогоDate
объекта:
var date = new Date();
var sysHours = date.getHours();
var minutes = date.getMinutes();
//...
Это должно сработать!
Дополнительно: вы можете пропустить добавление displayCurrentTime
к другой функции внутри setInterval
функции: window.setInterval(displayCurrentTime, 1000);
var displayCurrentTime = function() {
var date = new Date(); // Get current date object
var sysHour = date.getHours(); // Get Hours
var curHour = 0; // Initialize current hour (12 hr format)
var morningEvening; // No need to initialize
if (sysHour < 13) { // If it's in the morning, set time as is.
curHour = sysHour;
morningEvening = "AM"
} else {
curHour = sysHour - 12; // If it's in the evening, subtract 12 from the value and use "PM"
morningEvening = "PM"
}
var curMins = date.getMinutes(); // Get Minutes
// Capture the ID of the notification bar div, and compose a string from the above values.
var notificationBar = document.getElementById("notificationBar");
var dateTimeString = curHour ":" curMins " " morningEvening;
// All that code above files into this fun stuff.
notificationBar.innerHTML = dateTimeString;
}
window.setInterval(displayCurrentTime, 1000);
<div id='notificationBar'></div>