setInterval与innerHTML

<script>
var nowTime = new Date();
function _$(e){
return document.getElementById(e);
}

function topTimeFunc(){
_$("topNowDate").innerHTML = nowTime.getFullYear()+"/"+eval("nowTime.getMonth()+1")+"/"+nowTime.getDate();
_$("topNowTime").innerHTML = nowTime.getHours()+":"+nowTime.getMinutes();
}

setInterval("topTimeFunc()",1000);
</script>

我想做一个在网页上自动刷新时间的代码,于是用了setInterval,但是没反应啊?这是为什么?

阅读 3.4k
5 个回答

setInterval 有反应,只是 nowTime 你定义在了 topTimeFunc 方法外面,每次刷新 nowTime 的值都没变

function topTimeFunc(){
var nowTime = new Date();
_$("topNowDate").innerHTML = nowTime.getFullYear()+"/"+eval("nowTime.getMonth()+1")+"/"+nowTime.getDate();
_$("topNowTime").innerHTML = nowTime.getHours()+":"+nowTime.getMinutes();
}

改成这样就可以了

调用setInterval的时候把方法名的引号去掉即可

var nowTime = new Date();
function _$(e){
return document.getElementById(e);
}

function topTimeFunc(){
_$("topNowDate").innerHTML = nowTime.getFullYear()+"/"+eval("nowTime.getMonth()+1")+"/"+nowTime.getDate();
_$("topNowTime").innerHTML = nowTime.getHours()+":"+nowTime.getMinutes();
}

window.setInterval(topTimeFunc(),1000);

一楼正解 BTW setInterval 可以写成

setInterval(function(){
    // code
},1000)

你的setInterval函数的参数错了,直接setInterval(topTimeFunc,1000)

function _$(e) {
    return document.getElementById(e);
  }

  function topTimeFunc() {
    var nowTime = new Date();
    _$("topNowDate").innerHTML = nowTime.getFullYear() + "/" + eval("nowTime.getMonth()+1") + "/" + nowTime.getDate();
    _$("topNowTime").innerHTML = nowTime.getHours() + ":" + nowTime.getMinutes() + ":" + nowTime.getSeconds();
  }

  setInterval(topTimeFunc, 1000);

在定时器中获取最新的时间;setInterval第一个参数是个函数(也可以是个字符串,用法和eval差不多),直接传更新时间的那个函数即可,不要加引号,也不用执行

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题