1 var obj = document.getElementById("testInfo");//有一个id为testInfo的A元素在页面2 window.onload=function(){
3
4 obj.onclick=function(){
5 starOperate();
6 overOperate();
7 }
8 }
这样写就会报错,第4行会obj为空或不是对象
但是这样写就不会报错:

2 window.onload=function(){
3     var obj = document.getElementById("testInfo");//有一个id为testInfo的A元素在页面
4 obj.onclick=function(){
5 starOperate();
6 overOperate();
7 }
8 }
希望有高手可以帮忙解释下原理。谢谢
javascripthtml

解决方案 »

  1.   

    需要等dom加载完毕,脚本才可以对dom进行操作
      

  2.   

    页面的dom都还没有加载完,就执行var obj = document.getElementById("testInfo"),肯定这个时候找不到这个对象啊。window.onload是等到网页中所有的元素都完全加载完成之后才执行,这个时候来找肯定就能找到那个对象了。
      

  3.   

    你第一种写法可以放在body之后,就会正常,因为这些都是顺序解析的,必须有操作对象才可以,否则就会报找不到对象的错误。
      

  4.   

    嗯楼上都是对的onload 的意思是  dom节点加载完成以后 进行 的操作,
    第一句代码是你引入js 的时候立马执行 的,你把这个js 放在了最头上,,意思是先执行这个js  再加载html元素
      

  5.   

    如果你把 var obj = document.getElementById("testInfo");这句话放到onload之前的话肯定得到的是null了因为dom还没有加载完所以Id为testInfo是不存在的,但是你将这句话放在onload里面这句话运行时dom已经加载完毕了如果页面有id为testInfo则obj是存在的,所以不报错了