一些简单的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>