代码如下:
<html>
<head>
<script type="text/javascript">
<!--
var sc = document.getElementById('es');
alert(sc);
-->
</script>
</head>
<body>
<div id='es'></div>
</body>
</html>
是个很简单的例子,可是不知道为什么sc老是为空,改成document。getElementsByTagName(“div”)就能取到obj了,好奇怪,方法应该没写错啊,什么情况啊,还有document。getElementsByTagName返回的不应该时数组吗,为什么我用sc[0]就报错,直接写sc就没问题了呢。

解决方案 »

  1.   

    因为页面加载的时候,<div id='es'></div>还没渲染你就执行了
    var sc = document.getElementById('es');
    alert(sc);那时候es还不存在,当然是空了,你要把
    <script type="text/javascript">
    <!--
    var sc = document.getElementById('es');
    alert(sc);
    -->
    </script>
    放到body后面,或者
    window.onload = function(){
    var sc = document.getElementById('es');
    alert(sc);
    }
      

  2.   

    <div id='es'>aaaaa</div>
    <script type="text/javascript">
    <!--
    var sc = document.getElementById('es');
    alert(sc.innerHTML);
    -->
    </script>
    JS写HTML后面。页面先加载HTML,再加载JS,然后JS分析已加载的HTML元素。
      

  3.   

    在执行js语句的时候,文档还没加载完。。<html>
    <head>
    </head>
    <body>
    <div id='es'></div>
    <script type="text/javascript">
    <!--
    var sc = document.getElementById('es');
    alert(sc);
    -->
    </script>
    </body>
    </html>或者<script type="text/javascript">
    <!--
    window.onload = function(){
    var sc = document.getElementById('es');
    alert(sc);
    }
    -->
    </script>
      

  4.   

    大意了,忘记这点了,
    不过为什么getElementsByTagName()能取到呢
      

  5.   

    getElementsByTagName它返回只是一个空的对象而已。。
      

  6.   

    元素还没加载完 。
    这个问题一个月不知道多少次 。
    建议js语句都放到function里面去 。
      

  7.   

    getElementsByTagName() 取到的并非界面上的那些div集合。
     你可以使用IE8调式,便知。