日期:2014-05-16  浏览次数:20423 次

关于日期显示的问题。
本帖最后由 Opera_mini 于 2013-03-20 11:35:14 编辑
<html>
    <head></head>
<body>
<script type = "text/javascript">
var a = document.createElement("div");
a.id = "firstdiv";
document.body.appendChild(a);
var b = document.getElementById("firstdiv");
function nowTime () {
var c = new Date();
b.innerHTML = "当前时间为:" + c.getFullYear() + "年   " + (c.getMonth() + 1) + "月   " + c.getDate() + "号   " + c.getHours() + "点   " + c.getMinutes() + "分   " + c.getSeconds() + "秒";
}
setInterval("nowTime()",1000);
</script>
</body>
</html>
先不管这代码写得好不好。这段代码是可以每隔一秒显示正确的时间的。但是接下来这段就不行了。
<html>
    <head></head>
<body>
<script type = "text/javascript">
var a = document.createElement("div");
a.id = "firstdiv";
document.body.appendChild(a);
var b = document.getElementById("firstdiv");
var c = new Date();
function nowTime () {
b.innerHTML = "当前时间为:" + c.getFullYear() + "年   " + (c.getMonth() + 1) + "月   " + c.getDate() + "号   " + c.getHours() + "点   " + c.getMinutes() + "分   " + c.getSeconds() + "秒";
}
setInterval("nowTime()",1000);
</script>
</body>
</html>
就是把  var c = new Date();  拿到了函数外面,为什么就不行了。按理说,nowTime()每隔一秒被调用的时候,nowTime()里面的 b.innerHTML 后面还是会调用函数外部的 c 的,不是吗?
html javascript function

------解决方案--------------------
引用:
引用:因为你拿到外面以后,在页面加载到这的时候c的值就已经定下来了,每次取c的时候都取的是相同的值,所以就不变了呗

放在函数里面,每次执行这个函数的时候会给c重新赋值,所以就一直在变了呗。是只有js是这样的,还是别的语言也是这样的?


可不都是这样?

你把c放到函数外面
var c = new Date();
这行就相当与
var c;//声明一个变量c
c = new Date();//给c赋值,值为当前日期

这时候对于nowTime这个函数来说c就已经是一个固定的值了。

要是把这一行放到nowTime里面去,每次调用方法,c会被重新赋值,所以就能得到你想要的效果。