麻烦各位帮我解释一下,底下是代码:
    var obj = document.getElementById("myDiv");
    alert(obj);
这里的obj返回的确实是javascript对象,但是弹出对话框的时候我发现这个对象带个中括号[],如果是带有中括号,就应该可以认为返回的是一个对象数组,我就可以通过下标来访问,但是令我出乎意料的是通过下标访问时alert(obj[0]),返回的是undefined,这该怎么解释呢?

解决方案 »

  1.   

    我觉得括号是提示你【这是一个对象,不是一个"object"字符串】的吧
      

  2.   

    document.getElementById("myDiv")得到的是id为myDiv的HTML元素对象,如果页面只有这一个元素是这个ID的话,那么你用【0】访问肯定是undefined
      

  3.   

    这一对中括号是没什么意义的,考虑一下下面这个例子:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head><body>
    <div id="myDiv">
    <p>test</p>
    </div>
    <div id="myDiv2">
    <p>test2</p>
    </div>
    <script type="text/javascript">
    var obj1 = document.getElementById('myDiv');
    var obj2 = document.getElementsByTagName('div');
    var obj3 = new Array(1,2,3);
    alert(obj1);
    alert(obj2);
    alert(obj3);
    alert(obj2[0]);  //这里看起来像是数组操作,实际上不是,obj2实际上是一种哈希结构
    </script>
    </body>
    </html>
      

  4.   

    try:<input id="sh" /><hr>
    <script type="text/javascript">
    var obj = document.getElementById("sh");
    var str = "";
    for(p in obj.attributes) {
      str += p + ": " + obj[p] + "<br>";
    }
    document.write(str);
    </script>