首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

getElementsByTagName查找节点的有关问题

2013-06-25 
getElementsByTagName查找节点的问题!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Strict//EN http://

getElementsByTagName查找节点的问题


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
<title>找错</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<style type="text/css">
</style>
</head>
    <body>
        <div id="banner">
            <p>p1</p>
            <p>p2
                <span>
                    <p>我是span下面的P1</p>
                    <p>我是span下面的P2</p>
                </span>
            </p>
            <span>span</span>
            <div>div子</div>
        </div>
        <div>
            第3个
        </div>
        <script type="text/javascript">
            function t1(){
                var find_id_banner = document.getElementById('banner');
                var find_tag_p = find_id_banner.getElementsByTagName('p');
                var find_tag_span = find_tag_p[1].getElementsByTagName('span');
                var find_tag_span_p = find_tag_span[0].getElementsByTagName('p');
                alert(find_tag_span_p.length);
            }
        </script>

        <p>
            <input type="button" value="查找" onclick="t1();" />
        </p>

    </body>
</html>


这上面是代码,为什么火狐,chrome,IE10浏览器alert出来的find_tag_span_p.length的长度是0?但IE6返回的是2,这是浏览器的不兼容吗?如果不兼容的话,我该用什么办法来查找span下面的p节点? JavaScript


[解决办法]
按规范 p与div不一样,P元素是不能包含块级元素(包括P自身)的。
所以你直接查看find_tag_p[1].innerHTML 只能看到

p2
                <span>
                    </span> 

span下面的p 火狐,chrome,IE10等现代点的浏览器自动修正了去掉了内部的p,ie6这种远古浏览器则不会修正这个不规范的地方。
[解决办法]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
<title>找错</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
<style type="text/css">
</style>
</head>
    <body>
        <div id="banner">
            <div>p1</div>
            <div>p2
                <div>
                    <div>我是span下面的P1</div>
                    <div>我是span下面的P2</div>
                </div>
            </div>
            <span>span</span>
            <div>div子</div>
        </div>
        <div>
            第3个
        </div>
        <script type="text/javascript">
            function t1(){
                var find_id_banner = document.getElementById('banner');
                var find_tag_p = find_id_banner.getElementsByTagName('div');
                var find_tag_span = find_tag_p[1].getElementsByTagName('div');
                var find_tag_span_p = find_tag_span[0].getElementsByTagName('div');
                alert(find_tag_span_p.length);
            }
        </script>
 
        <p>
            <input type="button" value="查找" onclick="t1();" />
        </p>


 
    </body>
</html>
可能是因为你在span下加p导致的吧 貌似块级元素 行级元素什么的  你看看 

热点排行