1.获取节点

1-1 nodeType 节点类型

  • nodeType == 1 元素节点
  • nodeType == 2 属性节点
  • nodeType == 3 文本节点

    getAttributeNode() 获取属性节点

    firstChild() 获取第一个子节点

    ```javascript // getAttributeNode() 获取属性节点 // firstChild() 获取第一个子节点

    hello world

  1. <a name="dKSW1"></a>
  2. ## 1-2 childNodes 获取所有子节点
  3. <a name="KNHaM"></a>
  4. ## parentNode 父元素节点
  5. ```javascript
  6. <ul id="app">
  7. <li>hello world</li>
  8. <li>hello world</li>
  9. <li>hello world</li>
  10. <li>hello world</li>
  11. </ul>
  12. <script>
  13. var app = document.getElementById("app")
  14. var childs = app.childNodes;
  15. console.log(childs); // 所有的子节点 共有9个
  16. var arr = []
  17. for(var i = 0;i<childs.length;i++){
  18. if(childs[i].nodeType == 1){
  19. arr.push(childs[i])
  20. }
  21. }
  22. console.log(arr);
  23. </script>

1-3 children 只获取元素节点

  1. <ul id="app">
  2. <li>hello world</li>
  3. <li>hello world</li>
  4. <li>hello world</li>
  5. <li>hello world</li>
  6. </ul>
  7. <script>
  8. var app = document.getElementById("app")
  9. console.log(app.children) // 只获取元素节点
  10. </script>

2、增加节点

2-1 appendChild 追加节点(末尾添加节点)

向节点的子节点列表的末尾添加新的子节点

createElement() 创建节点

createTextNode() 创建文本节点

  1. <div id="app">
  2. </div>
  3. <script>
  4. var app = document.getElementById("app")
  5. var p = document.createElement("p")
  6. var txt = document.createTextNode("hello world")
  7. p.appendChild(txt)
  8. console.log(p)
  9. app.appendChild(p)
  10. console.log(app)
  11. </script>

2-2 insertBefore 插入节点

parentNode.insertBefore(newNode,在谁前面)
在已有的子节点前插入一个新的子节点
innerHtml 元素里的文字

  1. <ul id="app">
  2. <li>html</li>
  3. <li id="js">javascript</li>
  4. </ul>
  5. <!--
  6. innerHtml 元素里的文字
  7. parentNode.insertBefore(newNode,在谁前面) 插入节点
  8. -->
  9. <script>
  10. var app = document.getElementById("app")
  11. var li = document.createElement("li")
  12. var js = document.getElementById("js")
  13. li.innerHTML = "vue"
  14. console.log(li);
  15. app.insertBefore(li,js)
  16. console.log(app)
  17. </script>

2-3 append 在结尾插入节点

2-4 prepend 在开头插入节点

  1. <ul id="app">
  2. <li>html</li>
  3. </ul>
  4. <script>
  5. // append,prepend
  6. var app = document.getElementById("app");
  7. var p1 = "<h1>我是在结尾插入的</h1>";
  8. var p2 = "<h1>我是在开头插入的</h1>"
  9. app.append(p1);
  10. app.prepend(p2)
  11. </script>

2-5 before

2-6 after

  1. <p id="p">hello world</p>
  2. <script>
  3. var p = document.getElementById("p");
  4. p.after("after")
  5. p.before("before")
  6. </script>

3、删除节点

3-1 removeChild() 删除节点

  1. <div id="app">
  2. <div id="child">
  3. hello world
  4. </div>
  5. </div>
  6. <script>
  7. // removeChild() 让元素从DOM树,渲染树中消失
  8. var app = document.getElementById("app")
  9. var child = document.getElementById("child")
  10. app.removeChild(child)
  11. </script>

4、替换节点

4-1 replaceChild 替换节点

parentNode.replaceChild(newNode,targetNode) 替换某个元素

  1. <div id="app">
  2. <div id="child">
  3. child
  4. </div>
  5. </div>
  6. <script>
  7. var app = document.getElementById("app")
  8. var child = document.getElementById("child")
  9. var p = document.createElement("p")
  10. p.innerHTML = "hello world"
  11. app.replaceChild(p,child)
  12. console.log(app);
  13. </script>

5、克隆节点

5-1 cloneNode 克隆节点

  1. node.cloneNode( )
  2. 括号为空或false浅拷贝,只复制标签不复制内容
  3. 括号为true,深拷贝,也复制内容
  1. <div id="app">
  2. <div id="one">hello world</div>
  3. </div>
  4. <script>
  5. var app = document.getElementById("app")
  6. var one = document.getElementById("one")
  7. var test = one.cloneNode(true)
  8. console.log(test);
  9. app.appendChild(test);
  10. console.log(app);
  11. </script>

6、节点和元素节点

  1. firstChild 获取第一个子节点
  2. firstElementChild 获取第一个元素子节点
  3. lastChild
  4. lastElementChild
  5. nextSibling
  6. nextElementSibling
  7. previousSibling
  8. previousElementSibling
  1. <ul id="app">
  2. <li>html</li>
  3. <li>css</li>
  4. </ul>
  5. <script>
  6. var app = document.getElementById("app")
  7. console.log(app.firstElementChild);
  8. </script>