搜索
javascript - 为什么获取Element的childNodes结点时找不到span?
黄舟
黄舟 2017-04-11 12:42:08
[JavaScript讨论组]

在学习ELement结点的childNodes的方法时测试一下代码

<html>  
<body>
<span id="Span"></span>
<a id="a"></a>
<p id="p"></p>
<p id="p">
    <span id="span">
        <p></p>
    </span>
</p>
<script type="text/javascript">
    var allElement=document.body.childNodes;
    for(var i=0;i<allElement.length;i++)
        console.log(allElement[i].nodeName);
</script>
</body>  
</html>  

控制台输出结果却是

#text
SPAN
#text
A
#text
p
#text
P
p
#text
P
#text
SCRIPT

为什么找不到嵌套的span标签呢?开头的span标签明明可以被检测到啊?若是说孙子结点不能被检测到,那么为什么span嵌套的p却能被列举出来呢?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(1)
高洛峰
  1. childNodes只能返回子代节点

  2. span是内联元素,内联元素是不能嵌套块级元素的,你强行嵌套的结果是这样的:
    p变成p的兄弟节点,所以返回到的结果就如题中所示

  3. 嵌套规则:

    • 块级元素可以包含内联元素或某些块级元素,但内联元素不能包含块级元素,它只能包含其它内联元素。

    • 块级元素不能放在p里面。

    • 有几个特殊的块级元素只能包含内联元素,不能包含块级元素。如h1,h2,h3,h4,h5,h6,p,dt

    • li内可以包含p

    • 块级元素与块级元素并列、内联元素与内联元素并列。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号