前一个兄弟节点封装
来源:3-13 封装节点关系函数
慕姐2095756
2021-02-15 15:31:23
<div id="box">
<p>段落A</p>
<!-- 注释 -->
<p id="para">段落B</p>
<span></span>
<p>段落C</p>
</div>
--------------------------------------------------
var para=document.getElementById('para');
function getElementPrevSibling(node){
if(node.previousSibling.nodeType==1){
return node.previousSibling;
}else{
getElementPrevSibling(node.previousSibling);
}
}
console.log(getElementPrevSibling(para));
为什么得到的是undefined
1回答
同学你好,这是由于previousSibling虽然表示获取元素的上一个兄弟节点,但是其包含元素节点、文本节点、注释节点等,previousSibling会把html结构中的各种空格、换行符、注释都当做同胞元素处理,这就会导致错误。同学给出的代码中<p id="para">段落B</p>的前一个节点是注释节点,因此会打印出undefined。可以结合previousElementSibling进行改造,具体参考如下:
祝学习愉快!
相似问题