<html>
<head>
<title></title>
</head>
<body>
<script language="javascript">
var x = document.getElementById("txt")  //定义在function外 fn()找不到对象
function fn()
{
////var x = document.getElementById("txt")  //定义在function内 显示正常
  alert(x);
}
fn()
</script>
<div id="txt">hellow world</div>
</body>
</html>
请问 这是为什么呢????

解决方案 »

  1.   

    都不会正常的 因为DIV还没加载完毕 你是取不到的
      

  2.   

    写在window.onload出路函数里确保对象已经加载.
    var x;
    window.onload=function(){
       x = document.getElementById("txt");
    }
      

  3.   

    LZ你是操作DOM,需要等HTML加载解析完DOM树才会建好,这时候才可以使用DOM对象 
    所以你在一开始就调用DOM:document.getElementById("txt")是找不到txt的 
    而在function里等待调用,这时候HTML已经解析完了,所以就正常
      

  4.   

    自上往下加载的,不可能,javascript先被执行了,DOM树根本就没加载完
      

  5.   

    如果你非要放在外面的话,你可以定义个初始化函数塞.function _init()
    {
    ...........
    }
    window.onload   = function ()
    {
         _init();
    }
      

  6.   

    原因就是你那个java脚本执行于DOM加载之前,脚本肯定找不到对象的,最简单的就是把java脚本放到最后,要么在<script language="javascript"> 里加入defer="defer"就可以了。就是:<script language="javascript" defer="defer">
      

  7.   

    全局变量一般写在<head>与<body>之间,,才能完成理想状态