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的时间?
答案 0 :(得分:34)
您的代码中存在许多错误。如果不使用变量声明前面的var
,就会将它们泄漏到全局范围内。
此外,document.write
的使用是discouraged。
我将如何做到这一点:
<强> 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>
答案 1 :(得分:4)
setInterval(表达式,超时);
函数setTimeout用于单个超时,因此使用setInterval将是更合适的选项。 SetInterval将定期运行,而没有Ivo回答的额外行。
我会重写Ivo的答案如下:
<强> JavaScript的:强>
d:\home\site
答案 2 :(得分:0)
x = document.getElementsByTagName('SPAN').item(0);
x.innerHTML = f_date;
尝试使用此代码块而不是return
语句,我没有测试它但它可能会起作用
答案 3 :(得分:0)
在timeago jQuery插件中可能有一些东西你可以挂钩,但我还没老实说过......
答案 4 :(得分:0)
$('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);
}
答案 5 :(得分:0)
我使用setInterval而不是setTimeout:
答案 6 :(得分:0)
我认为你的setTmeout函数有错误的变量,第一个应该是一个函数而不是一个字符串,这让我有点困惑。基本上,当您运行该函数时,您需要写入span标记。
我在小提琴中创建了一个jQuery版本来演示我的意思。没有你的strMonth功能,但你明白了。我还将警报更改为console.log,但您可以删除该行。
答案 7 :(得分:0)
Straigt Javascript时间格式/更新
1:创建月转换器功能 2:创建时间函数 3:创建更新功能 4:创建outPut func
// 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);
答案 8 :(得分:0)
我使用了@soloproper setInterval概念@Ivo Wetzel的总体答案,我的更新全是根据需要格式化时间。 精简的编程行
<div id="liveClock"> </div>
$(document).ready(function () {
updateClock();
});
function updateClock() {
document.getElementById('liveClock').innerHTML = new Date().format("dd/MMMM/yyyy hh:mm:ss tt");
}
setInterval(updateClock, 1000);
答案 9 :(得分:-1)
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>