javascript - js获取服务器时间,但用了setInterVal后,就回到1970-1-1

查看:105
本文介绍了javascript - js获取服务器时间,但用了setInterVal后,就回到1970-1-1的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

var oDiv = document.createElement('div'); 
oDiv.id = 'div1'; 
document.body.appendChild(oDiv);
document.getElementById('div1').style.position="fixed";
document.getElementById('div1').style.left="0";
document.getElementById('div1').style.top="180px";
document.getElementById('div1').style['z-index']="200";
document.getElementById('div1').style.background="#38f";
document.getElementById('div1').style.color="#fff";


var time,nt,add1s;

ajax();
function ajax(){
      var xhr = null;
            if(window.XMLHttpRequest){
            xhr = new window.XMLHttpRequest();
            }else{ // ie
            xhr = new ActiveObject("Microsoft")
            }
      // 通过get的方式请求当前文件
      xhr.open("get","/");
      xhr.send(null);
      // 监听请求状态变化
            xhr.onreadystatechange = function(){
                  time = null,
                  curDate = null;
                if(xhr.readyState===2){
                      // 获取响应头里的时间戳
                      time = xhr.getResponseHeader("Date");
                      aa(time)//第一次执行的时候正常
setInterval("aa(time)",1000)//执行setInterval,就变成1970-1-1 8:00:00


                }
                
            }
}

function aa(time){
add1s=new Date(time).getTime()+1000;
nt=new Date();
nt.setTime(add1s);//设置新时间比旧时间多一秒
time=nt.setTime(add1s);//把新设置的时间赋给变量time,目的是在下次调用时,在多一秒的基础上继续加1秒
 document.getElementById('div1').innerHTML="服务器时间:"+nt.getFullYear()+"-"+(nt.getMonth()+1)+"-"+nt.getDate()+" "+nt.getHours()+":"+nt.getMinutes()+":"+nt.getSeconds();
 console.log("时间"+new Date(time))
}

执行setInterval("aa(time)",1000)的时候就不正常了,是为什么呢?

解决方案

setInterval("aa(time)",1000)
改成

setInterval(function () {
  aa(time)
},1000)

这篇关于javascript - js获取服务器时间,但用了setInterVal后,就回到1970-1-1的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆