1、获取节点

1-1 nodeType 节点类型

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

    getAttributeNode() 获取属性节点

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

    hello world

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

1-4 节点和元素节点

  1. firstChild() 获取第一个子节点
  2. lastChild() 获取最后一个子节点
  3. childNodes 获取所有子节点
  4. children 获取所有子元素节点
  5. parentNode 获取父节点
  6. firstChild 获取第一个子节点
  7. firstElementChild 获取第一个元素子节点
  8. lastChild
  9. lastElementChild
  10. nextSibling 前一个节点
  11. nextElementSibling 前一个元素节点
  12. previousSibling
  13. 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>

2、增加节点

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

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

  1. createElement() 创建元素节点
  2. createTextNode() 创建文本节点
  3. createAttribute()创建属性节点
  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>