DOM获取节点相关

127 阅读2分钟

body代码

    <div>
        <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
    </ul>
    </div>

DOM 节点

一般来说我们分为三个大类 元素节点(标签) / 文本节点(标签内的文字) / 属性节点(标签上的属性)

元素节点

通过 getElementBy... 获取到的都是元素节点

属性节点

通过 getAttribute 获取到的都是属性节点

文本节点

通过 innerText 获取到的就是元素的文本节点

1.获取子节点

body代码

    <div>
        <p>你好</p>
        <span>测试文本</span>
        <h1>JS 是世界上最优美的语言</h1>
    </div>

0. 获取元素

    var oDiv = document.querySelector('div')

1.1 获取某一节点下 所有的 子一级 节点, 获取到的是一个伪数组

语法:

    元素.childNodes
    
    console.log(oDiv.childNodes)
     //拿到的是一个伪数组, 里边有 7 个节点
     //[0]: text  从<div>一直到 <p> 中间有一个换行和一堆空格     这是一个文本节点
     //[1]: p 这个就是 p 标签, 他是第二个节点, 这是一个 元素节点
    //[2]: text   从 </p> 一直到 <span> 中间有一个换行和一堆空格  这是一个文本节点
     //....

1.2 获取某一节点下 所有的 子一节 元素节点 获取到的是一个伪数组

语法:

    元素.children
    
    
    
    console.log(oDiv.children)  // 这里只有 div 内部的标签

1.3 获取某一节点下子一级的 第一个节点

语法:

    元素.firstChild
    
    console.log(oDiv.firstChild)    // #text

1.4 获取某一节点下子一级的 最后一个节点

语法:

    元素.lastChild
    
    console.log(oDiv.lastChild) // #text

1.5 获取某一节点下子一级的 第一个元素节点

语法:

    元素.firstElementChild
    
    console.log(oDiv.firstElementChild)
   

1.6 获取某一节点下子一级的 最后一个元素节点

语法:

    元素.lastElementChild
    
    console.log(oDiv.lastElementChild)
   
   

2.获取兄弟节点

body代码

    <div>
    <p>你好</p>
    <span>测试文本</span>
    <h1>JS 是世界上最优美的语言</h1>
</div>

0. 获取元素

    var oSpan = document.querySelector('span')

2.1获取对应的 下一个兄弟节点

语法:

    元素.nextSibling
    
    
    console.log(oSpan.nextSibling)  // #text
    

2.2 获取对应的 上一个兄弟节点

语法:

    元素.previousSibling
    
    
    console.log(oSpan.previousSibling)  // #text

2.3 获取对应的 下一个兄弟元素节点

语法:

    元素.nextElementSibling
    
    
    console.log(oSpan.nextElementSibling)   // h1

2.4获取对应的 上一个兄弟元素节点

语法:

    元素.previousElementSibling
    
    console.log(oSpan.previousElementSibling)   // p
    

3.获取父节点与属性节点

body代码

    <div>
        <p>你好</p>
        <span>测试文本</span>
        <h1 id="h1_box" class="h1_box_cla" test="QF001" num="100">JS 是世界上最优美的语言</h1>
    </div>

0. 获取节点

    var oH = document.querySelector('h1')

3.1 父节点

语法:

    元素.parentNode
    
    
    console.log(oH.parentNode)

3.2 获取元素的所有属性节点

语法:

    元素.attributes
    
    
    console.log(oH.attributes)
    console.log(oH.attributes[0])