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

来源:8-3 计时器setInterval()

fujinhong

2015-11-26 11:09

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

写回答 关注

1回答

  • 慕男婶
    2015-11-26 13:48:34

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

    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执行之后返回值是一个函数,也是可以的。但一般没人这样做。。

    西风潇潇

    完美的解决了我的疑惑,大赞!

    2016-01-19 16:49:48

    共 1 条回复 >

JavaScript进阶篇

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

468195 学习 · 21891 问题

查看课程

相似问题