<html>
<head>
<script language="javascript">
function child(){
alert(document.getElementById("parentchild").childNodes[1].nodeName);
}
window.onload=child;
</script>
</head>
<body>
<span id="parent">
<div id="parentchild">
<span>beautiful</span>
<a>别话</a>
</div>
</span>
</body>
</html>childNodes[0]时输出正常为span,childNodes[1]时IE下输出#text。求解

解决方案 »

  1.   

    不过 改为0的时候 输出#text
      

  2.   

    024输出的是#text 13输出是对的
      

  3.   

    这是因为各种浏览器对xml的支持不一样造成的。在非IE的大部分浏览器下,每两个节点之间的回车或空白都会被解释为一个空白的文本节点,而IE的解释有些时候比较混乱,特别是在html中<html>
    <head>
    <script language="javascript">
    function child(){
        alert(document.getElementById("parentchild").childNodes[1].nodeName);
    }
    window.onload=child;
    </script>
    </head>
    <body>
    <span id="parent">
        <div id="parentchild">
            <span>beautiful</span><a>别话</a>
        </div>
    </span>
    </body>
    </html>
    <html>
    <head>
    <script language="javascript">
    function child(){
        alert(document.getElementById("parentchild").childNodes[1].nodeName);
    }
    window.onload=child;
    </script>
    </head>
    <body>
    <span id="parent">
        <div id="parentchild">
            <span>beautiful</span>
            <a>别话</a>
        </div>
    </span>
    </body>
    </html>上面的两段html文档,第二段在<span>标签和<a>标签之间有一个回车,IE把这个回车解释为一个空白的文本节点,是#text;第一段<span>和<a>标签之间没任何内容。所以弹出的结果是合理的。而且页面中的效果也是合理的,有回车的"beautiful"和"别话"之间有间距。个人比较讨厌IE,因为它的解释有些时候很混乱,不像非IE的,任何回车或空白都是一个空白文本节点。像本例子,如果按IE的传统逻辑,这个回车应该不被解释为空白文本节点,总之,IE很悲剧
      

  4.   

    childNodes的用法在ie和ff间截然不同,建议换成其他的方法。。