87,995
社区成员
发帖
与我相关
我的任务
分享
不过,分析看来,如果源码换行了,(body的>和p的<没有直接接上,而是出现换行或空格),那么实际中间有一个textNode节点的。也就是说body其实有3个子节点,
body
├─textNode
├─p
│ └─textNode(nodeValue=XXX)
└─textNode
因此,p不是body的lastChild,最后那个textNode才是!
然而一般空的textNode对我们根本没有意义,现代浏览器引入了lastElementChild。在没有这个属性的浏览器上,只能通过previousSibling然后判断nodeType逐一来排除textNode了找到我们要的Element。
类似的有firstChild,previousSibling,nextSibling,在现代浏览器中都有其Element版本。