previousSibling、previousElementSibling的区别

previousSibling:获取元素的上一个兄弟节点;(既包含元素节点、文本节点、注释节点)

<div id="box">
    <ul id="ul">
        <li>第一个li>
        <li id="one">第二个li>
        <li>第三个li>
    ul>
    <p>我是第二个子节点p>
div>

var one = document.getElementById("one");
console.log(one.previousSibling.nodeName);//#text
var one = document.getElementById("one");
console.log(one.previousElementSibling.nodeName);//LI

previousElementSibling:获取上一个兄弟元素节点;(只包含元素节点);

<div id="box">
    <ul id="ul">
        <li>第一个li>
        <li id="one">第二个li>
        <li>第三个li>
    ul>
    <p>我是第二个子节点p>
div>

previousSibling 模拟 previousElementSibling:
<div id="box">
    <ul id="ul">
        <li>第一个li>
        <li id="one">第二个li>
        <li>第三个li>
    ul>
    <p>我是第二个子节点p>
div>

function myPre(ele){
    if(ele.previousElementSibling !== undefined){
        return ele.previousElementSibling;
    }else{
        var item = ele.previousSibling;
        while(item && item.nodeType !=1){
            item = item.previousSibling;
        }
        return item;
    }
}
var oNe = document.getElementById("one");
 console.log(myPre(oNe));;


你可能感兴趣的:(JS类)