在学习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却能被列举出来呢?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
childNodes只能返回子代节点
span是内联元素,内联元素是不能嵌套块级元素的,你强行嵌套的结果是这样的:
p变成p的兄弟节点,所以返回到的结果就如题中所示
嵌套规则:
块级元素可以包含内联元素或某些块级元素,但内联元素不能包含块级元素,它只能包含其它内联元素。
块级元素不能放在p里面。
有几个特殊的块级元素只能包含内联元素,不能包含块级元素。如h1,h2,h3,h4,h5,h6,p,dt
li内可以包含p
块级元素与块级元素并列、内联元素与内联元素并列。