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

不知道分析的对不对,实践出来是这样的

1、javascript代码必须放到form表单下面代码才可以正常执行,不然会报错告你document.getElementById("clock")是个空值,获取不到,
2、在setInterval()中调用clock函数的时候,只有写成clock,时间才会间隔刷新显示,如果写成clock(),时间是一直不会变得

正在回答

1 回答

是的。但是总结的有点儿谬误的地方,我给你指出来

1、javascript并不是必须放到form表单下才可以正常运行的。

 例如(script在前,clock在后):

<script>
 // 浏览器解析网页是从上往下执行的,所以执行下面这行代码的时候,id为clock的div并没有解析到
 // 所以我获取不到
 var clock = document.getElementById("clock")
</script>
<div id="clock">我是clock,我在script后面</div>

  改成(div在前,script在后):

<div id="clock">我是clock,我在script前面</div>
<script>
 // 浏览器执行这行js代码时,上面的id为clock的div已经被解析了,所以我在下面可以获取到
 var clock = document.getElementById("clock")
</script>

   这个才是本质原因。

  解决办法有3:

   a、在domReady后再查询,保证所有dom都构建好了

   b、在window load后再查询,页面整个加载好了,dom早就ready了

   c、就是我写的第二个例子,再要查询的标签后面获取它,因为网页是从上往下执行,写在后面,肯定能保证

        要查询的dom已经构建了


2、setInterval(clock,1000)

     setInterval(clock(),1000)

     这两种写法并不一样,虽然看起来很像,

     第一种是把clock这个函数作为setInterval第一个参数

     第二种是吧clock的执行结果作为第一个参数

     当然,第二种如果clock执行之后返回值是一个函数,也是可以的。但一般没人这样做。。

1 回复 有任何疑惑可以回复我~
#1

西风潇潇

完美的解决了我的疑惑,大赞!
2016-01-19 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       468060    人
  • 解答问题       21891    个

本课程从如何插入JS代码开始,带您进入网页动态交互世界

进入课程

不知道分析的对不对,实践出来是这样的

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信