在 HTML DOM 中,所有事物都是节点。DOM 是被视为节点树的 HTML。
1.DOM 节点
根据 W3C 的 HTML DOM 标准,HTML 文档中的所有内容都是节点:
- 整个文档是一个文档节点
- 每个 HTML 元素是元素节点
- HTML 元素内的文本是文本节点
- 每个 HTML 属性是属性节点
-
2.节点的分类
元素节点 nodeType==1
- 文本节点 nodeType==3
- 属性节点 nodeType==2 ```javascript getAttributeNode() 获取属性节点 firtChild获取第一个子节点
hello world
<a name="138e0"></a>### 2.1获取子节点childNodes--包含所有的子节点(不管文本还是元素都包含)<br />children --只会获取子节点```javascriptvar app = document.getElementById("app");var childs = app.childNodes;var children = app.children;console.log(childs)console.log(children)
2.2获取所有元素的节点
<ul id="app"><li>hello world</li><li>hello world</li><li>hello world</li><li>hello world</li></ul><script>var app = document.getElementById("app");var childs = app.childNodes;var arr = [];for(var i=0;i<childs.length;i++){if(childs[i].nodeType == 1){arr.push(childs[i])}}console.log(arr);</script>
3.增加节点
createElement(); //创建元素节点createTextNode(); //创建文本节点appendChild(); //向节点的子节点列表的末尾添加新的子节点
<div id="app"><div>hello world</div></div></div><script>var app = document.getElementById("app");var p = document.createElement("p");var txt = document.createTextNode("hello world");p.appendChild(txt);app.appendChild(p);</script>
3.1给元素添加内容innerHTML
parentNode.insertBefore(newNode,targetNode)parentNode.insertBefore(新添加节点,参照节点)_注意:parentNode是节点的父节点
<ul id="app"><li>html</li><li id="js">js</li></ul><script>var app=document.getElementById("app");var js=document.getElementById("js");var li=document.createElement("li");li.innerHTML="vue";app.insertBefore(li,js);//在js上面插入</script>
3.2.append和prepend
append()用于在被选元素的结尾插入元素。
prepend()用于在被选元素的开头插入元素。
<ul id="app"><li>html</li></ul><script>// append,prependvar app = document.getElementById("app");var p = "<h1>hello world<h1>";//app.append(p);app.prepend(p);</script>
4.删除节点
parentNode.removeChild(childNode)
<div id="app"><div id="child">child</div></div><script>// removeChild()让从元素DOM树,渲染树上都消失var app = document.getElementById("app");var child = document.getElementById("child");app.removeChild(child);</script>
5.替换节点
repalceChild(newNode,targetNode)
<div id="app"><div id="child">child</div></div><script>var app=document.getElementById("app");var chlid=document.getElementById("child");var p=document.createElement("p");p.innerHTML="hello";app.replaceChild(p,chlid);
6.克隆节点
node.cloneNode(true)
<div id="app"><div class="one">hello</div></div><script>var app=document.getElementById("app");var one=document.getElementsByClassName("one");var test = one.cloneNode(true);console.log(test);app.appendChild(test);</script>
