Как регулярно обновлять время?
function timeClock()
{
setTimeout("timeClock()", 1000);
now = new Date();
alert(now);
f_date = now.getDate()+" "+strMonth(now.getMonth())+" "+now.getFullYear()+" / "+timeFormat(now.getHours(), now.getMinutes());
return f_date;
}
<span class="foo"><script type="text/javascript">document.write(timeClock());</script></span>
оповещения (в настоящее время); дает мне значение каждую секунду, но не обновляется в html. Как обновить время на html без обновления страницы?
Ответы
Ответ 1
В вашем коде есть ряд ошибок. Без использования var
infront ваших объявлений переменных вы пропустите их в глобальную область.
Кроме того, использование document.write
обескуражено.
Вот как бы я это сделал:
JavaScript:
function updateClock() {
var now = new Date(), // current date
months = ['January', 'February', '...']; // you get the idea
time = now.getHours() + ':' + now.getMinutes(), // again, you get the idea
// a cleaner way than string concatenation
date = [now.getDate(),
months[now.getMonth()],
now.getFullYear()].join(' ');
// set the content of the element with the ID time to the formatted string
document.getElementById('time').innerHTML = [date, time].join(' / ');
// call this function again in 1000ms
setTimeout(updateClock, 1000);
}
updateClock(); // initial call
HTML:
<div id="time"> </div>
Ответ 2
setInterval (выражение, таймаут);
Функция setTimeout предназначена для одного таймаута, поэтому использование setInterval было бы более подходящей опцией. SetInterval будет запускаться регулярно без дополнительных строк, на которые отвечает Ivo.
Я бы переписал ответ Иво следующим образом:
JavaScript:
function updateClock() {
// Ivo content to create the date.
document.getElementById('time').innerHTML = [date, time].join(' / ')
}
setInterval(updateClock, 1000);
Попробуйте сами! https://jsfiddle.net/avotre/rtuna4x7/2/
Ответ 3
x = document.getElementsByTagName('SPAN').item(0);
x.innerHTML = f_date;
попробуйте поставить этот блок кода вместо оператора return
, я его не тестировал, но он, вероятно, будет работать
Ответ 4
Может быть что-то в плагине timeago jQuery вы можете подключиться, но я честно не пробовал...
http://timeago.yarp.com/
Ответ 5
$('span.foo').html(f_date);
поместите это внутри вашей функции timeclock()
непроверенных
function timeClock()
{
setTimeout("timeClock()", 1000);
now = new Date();
alert(now);
f_date = now.getDate()+" "+strMonth(now.getMonth())+" "+now.getFullYear()+" / "+timeFormat(now.getHours(), now.getMinutes());
$('span.foo').html(f_date);
}
Ответ 6
Я бы использовал setInterval, а не setTimeout:
https://developer.mozilla.org/en/DOM/window.setInterval
Ответ 7
Я думаю, что ваша функция setTmeout имеет неправильные переменные, первая должна быть функцией, а не строкой, которая немного смутила меня. В основном вам нужно записать тег span при запуске функции.
Я создал версию jQuery в скрипте, чтобы продемонстрировать, что я имею в виду. Не было вашей функции strMonth, но вы поняли эту идею. Я также изменил оповещение на console.log, но вы можете удалить эту строку.
http://jsfiddle.net/5JWEV/
Ответ 8
Straigt Формат/обновление Javascript
1: создать месяц конвертер func
2: создать функцию времени
3: создать функцию обновления
4: создать функцию outPut
// month converter from index / 0-11 values
function covertMonth(num){
let months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
// look into index with num 0-11
let computedRes = months[num];
return computedRes;
}
// time func
function Time(){
// important to get new instant of the Date referrance
let date = new Date();
this.time = date.toLocaleTimeString();
this.year = date.getUTCFullYear();
this.day = date.getUTCDate();
this.month = date.getUTCMonth();
this.currentTime = date.toLocaleTimeString() + ' ' + covertMonth(this.month) + ' ' + this.day + ' ' + this.year;
return this.currentTime;
}
function timeOutPut(){
let where = document.getElementById('some-id');
where.textContent = Time(); // 1:21:39 AM Dec 17 2017
}
// run every 5secs
setInterval(timeOutPut, 5000);
Ответ 9
function timeClock()
{
setTimeout("timeClock()", 1000);
now = new Date();
alert(now);
f_date = now.getDate()+" "+strMonth(now.getMonth())+" "+now.getFullYear()+" / "+timeFormat(now.getHours(), now.getMinutes());
document.getElementById("foo").innerHTML = f_date;
}
<span id="foo"></span>