前一个兄弟节点封装
<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
正在回答
同学你好,这是由于previousSibling虽然表示获取元素的上一个兄弟节点,但是其包含元素节点、文本节点、注释节点等,previousSibling会把html结构中的各种空格、换行符、注释都当做同胞元素处理,这就会导致错误。同学给出的代码中<p id="para">段落B</p>的前一个节点是注释节点,因此会打印出undefined。可以结合previousElementSibling进行改造,具体参考如下:

祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星