为什么JS跳过parentNode这样的"<p>"

mik*_*elt 1 javascript dom

HTML:

<div class="a">
    <p><p class="y"><p class="z"></p></p></p>
</div>
Run Code Online (Sandbox Code Playgroud)

码:

        console.log(document.getElementsByClassName('z')[0].parentNode)
Run Code Online (Sandbox Code Playgroud)

返回div.a

帮助人们,为什么它会跳过

?? BTW如果将py更改为div.y则返回div.y

epa*_*llo 6

无效的html是它跳过的原因.段落中不能有段落.

HTML 4.01规范:9.3.1段落:P元素

P元素代表一个段落.它不能包含块级元素(包括P本身).

使用控制台检查HTML,您将看到浏览器将重写您的html以关闭第一个段落标记.这是浏览器将呈现的内容:

<div class="a">
    <p></p>
    <p class="y"></p>
    <p class="z"></p>
    <p></p>
    <p></p>
</div>
Run Code Online (Sandbox Code Playgroud)