DOM 操作

105 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天

DOM节点

  • DOM 的节点我们一般分为常用的三大类 元素节点 / 文本节点 / 属性节点
  • 什么是分类,比如我们在获取元素的时候,通过各种方法获取到的我们叫做元素节点(标签节点)
  • 比如我们标签里面写的文字,那么就是文本节点
  • 写在每一个标签上的属性,就是属性节点

元素节点

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

属性节点

  • 我们通过 getAttribute 获取的就是元素的属性节点

文本节点

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

获取节点

  • childNodes:获取某一个节点下 所有的子一级节点

    <body>
      <div>
        <p>hello</p>
      </div>
      
      <script>
        // 这个 oDiv 获取的是页面中的 div 元素,就是一个元素节点
        var oDiv = document.querySelector('div')
        
        console.log(oDiv.childNodes) 
        /*
            NodeList(3) [text, p, text]
          0: text
          1: p
          2: text
          length: 3
          __proto__: NodeList
        */
      </script>
    </body>
    复制代码
    
    • 我们会发现,拿到以后是一个伪数组,里面有三个节点
    • 一个 text:从 <div> 一直到 <p> 中间有一个换行和一堆空格,这个是第一个节点,是一个文本节点
    • 一个 p:这个 p 标签就是第二个节点,这个是一个元素节点
    • 一个 text:从 </p> 一直到 </div> 中间有一个换行和一堆空格,这个是第三个节点,是一个文本节点
    • 这个时候就能看到我们有不同的节点类型了
  • children :获取某一节点下所有的子一级 元素节点

    <body>
      <div>
        <p>hello</p>
      </div>
      
      <script>
        // 这个 oDiv 获取的是页面中的 div 元素,就是一个元素节点
        var oDiv = document.querySelector('div')
        
        console.log(oDiv.children) 
        /*
            HTMLCollection [p]
          0: p
          length: 1
          __proto__: HTMLCollection
        */
      </script>
    </body>
    复制代码
    
    • 我们发现只有一个节点了,因为 children 只要元素节点
    • div 下面又只有一个元素节点,就是 p
    • 所以就只有一个,虽然只有一个,但是也是一个 伪数组
  • firstChild:获取某一节点下子一级的 第一个节点

    <body>
      <div>
        <p>hello</p>
      </div>
      
      <script>
        // 这个 oDiv 获取的是页面中的 div 元素,就是一个元素节点
        var oDiv = document.querySelector('div')
        
        console.log(oDiv.firstChild) // #text 
      </script>
    </body>
    复制代码
    
    • 这个是只获取一个节点,不再是伪数组了
    • 获取的是第一个
    • 第一个就是 <div> 一直到 <p> 的那个换行和空格,是个文本节点
  • lastChild:获取某一节点下子一级的 最后一个节点

    <body>
      <div>
        <p>hello</p>
      </div>
      
      <script>
        // 这个 oDiv 获取的是页面中的 div 元素,就是一个元素节点
        var oDiv = document.querySelector('div')
        
        console.log(oDiv.lastChild) // #text 
      </script>
    </body>
    复制代码
    
    • 只获取一个节点,不再是伪数组
    • 获取的是最后一个
    • 最后一个就是 </p> 一直到 </div> 之间的换行和空格,是个文本节点