document.getElementById为空或不是对象的解决方法

    一些简单的JS问题给我难住了,浪费了不少时间。
    以前也经常碰到像今天这样提示document.getElementById().value为空或不是对象的问题,不过当时只要好好检查一下就会发现是id没有或是写错了,只要改过来也就好了。

  还有一种就是在<script language='text/javascript' defer=true>加上这个defer属性有时候也可以OK。可是今天这个情况着实的让我郁闷了一会,不管怎么改就是提示为空或缺少对象。

  查询了一下网络资源,还好,找到了原因.

     居然是把js代码写在了页面的最前面。原来document.getElementByID()还和位置有关系,也就是说出现document.getElementById()的时候要切记把代码段放到html的元素之后,然后在试试,应该就没什么问题了。以前也经常碰到一些简单的js代码,不过还真没注意过这个问题的存在。

(1)检查id是否没有或者写错了,这时只要改过来就行了;

(2)可能与id所在的位置有关,示例代码:

 1 <head>

 2     <title></title>

 3     <script type="text/javascript">

 4             var people = [

 5         { "firstname": "Bill", "lastname": "Gates" },

 6         { "firstname": "Tomas", "lastname": "Adison" },

 7         { "firstname": "Happy", "lastname": "Year" }

 8         ];

 9             people[1].firstname = "Job";

10             document.getElementById('showtext').innerHTML = people[1].firstname;

11         }

12     </script>

13 </head>

14 <body

15     <div id="showtext"></div>

16 </body>

这里会报出"document.getElementById为空或不是对象"的错误.

可以分析得出,页面在加载时候先加载JS代码,所以当执行到 第10行 时候会发现找不到 id为showtext 的标签,自然就错了.

这时候,只需要把 该id标签 放到JS执行的之前就不会出错,或者把 JS封装成方法 调用,也不会出错!切记.修改后的代码:

 1 <head>

 2     <title></title>

 3     <script type="text/javascript">

 4         function test() {

 5             var people = [

 6         { "firstname": "Bill", "lastname": "Gates" },

 7         { "firstname": "Tomas", "lastname": "Adison" },

 8         { "firstname": "Happy", "lastname": "Year" }

 9         ];

10             people[1].firstname = "Job";

11             document.getElementById('showtext').innerHTML = people[1].firstname;

12         }

13     </script>

14 </head>

15 <body onload="test()">

16     <div id="showtext"></div>

17 </body>

 

你可能感兴趣的:(document)