为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript作用域的一个小问题

JavaScript作用域的一个小问题

dollzcx 2017-01-16 16:19:43
写了一个时钟的js,发现一个问题, var t=new Date();这一行 必须放在function ch(){}中才能运行,没搞懂这个原理,求解答<body> <div class="div1"> <div class="div2"> <span id="y"></span> <span id="m"></span> <span id="d"></span> <span id="w"></span><br /> <span id="h"></span> <span id="m"></span> <span id="s"></span> </div> </div> <script type="text/javascript"> var span=document.getElementsByTagName('span') var week=['日','一','二','三','四','五','六'] function ch(){    var t=new Date(); span[0].innerHTML=t.getFullYear()+'-'; span[1].innerHTML=t.getMonth()+1+'-'; span[2].innerHTML=t.getDate(); span[3].innerHTML=week[t.getDay()]; span[4].innerHTML=t.getHours()+':'; span[5].innerHTML=t.getMinutes()+':'; span[6].innerHTML=t.getSeconds(); } ch(); setInterval(ch,100); </script>
查看完整描述

1 回答

已采纳
?
千秋此意

TA贡献158条经验 获得超187个赞


这不是作用域的问题吧,

 var t=new Date();放在函数外的话只有在页面加载的时候执行一次,也就是说你后面获取的时分秒啥的始终都是不变的,要想时间一直更新就需要每次调用函数的时候重新new Date(),所以 var t=new Date();放到函数里才没毛病啊

查看完整回答
2 反对 回复 2017-01-16
  • dollzcx
    dollzcx
    懂了 我以为没有调用到Date(),只是他的值没有变化,所以看不出来对吧
  • 1 回答
  • 1 关注
  • 983 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信