节点操作

107 阅读2分钟

节点

     1.节点 node : 网页一切内容皆为节点
        * 节点作用 : 让渲染引擎准确的渲染dom树
    2.四种节点: 元素节点、 属性节点 、 文本节点 、 注释节点
        * 最重要: 元素节点(标签)

查询节点之查询子节点

    代码格式:父元素.children
    <!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  <title>Document</title>
</head>

<body>
  <ul>
    <!-- 我是注释哟 -->
    我是文本哈
    <li>我是班长1</li>
    <li>我是班长2</li>
    <li>我是班长3</li>
    <li>我是班长4</li>
    <li>我是班长5</li>
  </ul>

  <script>
       /* 
          获取子元素 :  元素.children
      */
    let ul = document.querySelector('ul')
    console.log(ul.children)
  </script>
</body>

</html>

查询兄弟节点

    代码格式:
        查询上一个兄弟元素:元素.previousElementSibling
        查询下一个兄弟元素:元素.nextElementSibling
    <!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  <title>Document</title>
</head>

<body>
  <button class="btn">点我操作li2的兄弟节点</button>

  <ul>
    <li>我是班长1</li>
    <li id="li2">我是班长2</li>
    <li>我是班长3</li>
    <li>我是班长4</li>
    <li>我是班长5</li>
  </ul>

  <script>
    /* 
          获取兄弟元素 : 
            获取上一次元素 : 元素.previousElementSibling
            获取下一次元素 : 元素.nextElementSibling 
      */
    let li2 = document.querySelector('#li2')
    console.log(li2.previousElementSibling)
    console.log(li2.nextElementSibling)
  </script>
</body>

</html>

查询父元素节点

    代码格式:子元素.parentNode
    <!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  <title>Document</title>
</head>

<body>
  <ul>
    <li>我是班长1</li>
    <li id="li2">我是班长2</li>
    <li>我是班长3</li>
    <li>我是班长4</li>
    <li>我是班长5</li>
  </ul>

  <script>
       /*  
          获取父元素 : 父元素.parentNode
      */

    let li2 = document.querySelector('#li2')
    console.log(li2.parentNode)
  </script>
</body>

</html>

创建节点

    代码格式:document.createElement('标签名')
    
    新增节点的3个步骤:
        1.创建节点
           let li = document.createElement('标签名')
        2.为节点添加内容(方法很多)
            li.innerText=''
        3.添加到dom树
            ul.appendChild(li)
    <!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  <title>Document</title>
</head>

<body>
  <ul>
    <li>我是班长1</li>
    <li id="li2">我是班长2</li>
    <li>我是班长3</li>
    <li>我是班长4</li>
    <li>我是班长5</li>
  </ul>

  <script>
      /*
          1.1  document.write('')   一般不用
          1.2  元素.innerHTML = ''    新增100以内的元素的时候可以用
              覆盖操作:  元素.innerHTML = '<h1>标题</h1>'
              新增操作:  元素.innerHTML += '<h1>标题</h1>'
          1.3 document.createElement()    dom推荐
      */

    // 创建节点
    let newLi = document.createElement('li')
    newLi.innerHTML = '<a href="#">你好,小吴</a>'
    document.querySelector('ul').appendChild(newLi)
  </script>
</body>

</html>

添加到dom树的方式

    新增到最后面与新增到指定位置
      新增到最后面
        父元素.apprenChild()
      新增到指定位置
        父元素.insertBefore(子元素,要新增到那元素前面)

克隆节点

    代码格式:元素.cloneNode(布尔值)
        元素.cloneNode(false):克隆自身
        元素.cloneNode(true):克隆自身+子元素

删除节点

    代码格式:父元素.removeChild(子元素)

定时器

永久定时器

    代码格式:let newLi = setInterval(function(){},间隔时间)
    手动清除定时器:clearInterval(newLi)
    <!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  <title>Document</title>
</head>

<body>
  <button class="btn">移除定时器</button>
  <p id="pp">0</p>


  <script>
    let pp = document.querySelector('#pp')
    let btn = document.querySelector('.btn')
    let newID = setInterval(function () {
      console.log('小吴,你好呀!')
      pp.innerText++
    }, 100)

    btn.onclick = function () {
      clearInterval(newID)
    }
  </script>


</body>

</html>

间隔定时器

    在间隔时间里只执行一次,执行完毕后自动清除
    代码格式:let newLi = setTimeout(function(){},间隔时间)
    手动清除:clearTimeout(newLi)
    <!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  <title>Document</title>
</head>

<body>
  <button class="btn">移除定时器</button>
  <p id="pp">0</p>

  <script>
    let btn = document.querySelector('.btn')

    let newID = setTimeout(function () {
      console.log('哈哈哈哈哈')
    }, 3000)
    btn.onclick = function () {
      clearTimeout(newID)
    }
  </script>


</body>

</html>