<!DOCTYPE html>
<html>
<head>
<title></title>
<script type="text/javascript">
var a = document.getElementsByTagName('a');
alert(a);
</script>
</head>
<body>
<a href="#"></a>
<a href="#"></a>
<a href="#"></a>
<a href="#"></a>
</body>
</html>
不是应该获取所有a标签的一个列表吗?为什么会弹出object HTMLCollection呢?而且我用alert(a[0])弹出的是undefined?

解决方案 »

  1.   

    代码顺序的问题,JS代码位于目标元素之前,代码被执行时目标元素还没有加载到DOM树中。
    <!DOCTYPE html>
    <html>
    <head>
    <title></title>
    </head>
    <body>
    <a href="#">DEMO</a>
    <a href="#"></a>
    <a href="#"></a>
    <a href="#"></a> 
    <script type="text/javascript">
    var a = document.getElementsByTagName('a');
    alert(a[0].innerHTML);
    </script>
    </body>
    </html>
      

  2.   

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
    </head>
    <body>
    <a href="#">1</a>
    <a href="#">2</a>
    <a href="#">3</a>
    <a href="#">4</a>
        <script type="text/javascript">
            var a = document.getElementsByTagName('a');
            alert(a[0].innerHTML);
        </script>
    </body>
    </html>script放dom之后,或window.onload里
      

  3.   

    因为当你的var a = document.getElementsByTagName('a');时页面还没加载到那些a标签那里呢  或者可以这样
        <script type="text/javascript">
    function init(){
    var a = document.getElementsByTagName('a');
    var b="";
    for(var i=0;i<a.length;i++){
    b+=a[i].innerHTML;
    }
             alert(b);
    }
    window.onload=init;
        </script>