如何定期更新时间?

时间:2011-02-23 14:00:52

标签: javascript jquery datetime

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的时间?

10 个答案:

答案 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

亲自尝试一下! https://jsfiddle.net/avotre/rtuna4x7/2/

答案 2 :(得分:0)

x = document.getElementsByTagName('SPAN').item(0);
x.innerHTML = f_date;

尝试使用此代码块而不是return语句,我没有测试它但它可能会起作用

答案 3 :(得分:0)

在timeago jQuery插件中可能有一些东西你可以挂钩,但我还没老实说过......

http://timeago.yarp.com/

答案 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:

https://developer.mozilla.org/en/DOM/window.setInterval

答案 6 :(得分:0)

我认为你的setTmeout函数有错误的变量,第一个应该是一个函数而不是一个字符串,这让我有点困惑。基本上,当您运行该函数时,您需要写入span标记。

我在小提琴中创建了一个jQuery版本来演示我的意思。没有你的strMonth功能,但你明白了。我还将警报更改为console.log,但您可以删除该行。

http://jsfiddle.net/5JWEV/

答案 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>