不知道分析的对不对,实践出来是这样的
1、javascript代码必须放到form表单下面代码才可以正常执行,不然会报错告你document.getElementById("clock")是个空值,获取不到,
2、在setInterval()中调用clock函数的时候,只有写成clock,时间才会间隔刷新显示,如果写成clock(),时间是一直不会变得
1、javascript代码必须放到form表单下面代码才可以正常执行,不然会报错告你document.getElementById("clock")是个空值,获取不到,
2、在setInterval()中调用clock函数的时候,只有写成clock,时间才会间隔刷新显示,如果写成clock(),时间是一直不会变得
2015-11-26
是的。但是总结的有点儿谬误的地方,我给你指出来
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执行之后返回值是一个函数,也是可以的。但一般没人这样做。。
举报