DOM是一個樹形結構,要改變HTML的結構,就須要經過JavaScript來操做DOM。java
操做一個DOM節點實際上就是這麼幾個操做:python
更新:更新該DOM節點表示的HTML的內容,app
遍歷:遍歷該DOM節點下的子節點,spa
添加:動態增長了一個HTML節點,code
刪除:刪掉該DOM節點的內容以及它包含的全部子節點。xml
最經常使用的方法是document.getElementById()和document.getElementsByTagName(),以及CSS選擇器document.getElementsByClassName()。blog
// 返回ID爲'test-p'的節點:
var test = document.getElementById('test-p'); // 先定位ID爲'test-table'的節點,再返回其內部全部tr節點:
var trs = document.getElementById('test-table').getElementsByTagName('tr'); // 先定位ID爲'test-div'的節點,再返回其內部全部class包含red的節點:
var reds = document.getElementById('test-div').getElementsByClassName('red'); // 先定位class爲'c-green'的節點,再返回其內部全部class包含p的節點:
var arr = document.getElementsByClassName("c-green").getElementsByTagName("p"); // 獲取節點test下的全部直屬子節點:
var cs = test.children; // 獲取節點test下第一個、最後一個子節點:
var first = test.firstElementChild; var last = test.lastElementChild;
更新DOMip
// 獲取test-js節點:
var P = document.getElementById('test-js'); // 修改文本爲JavaScript:
P.innerHTML = 'JavaScript'; // 設置文本爲abc:
p.innerHTML = 'ABC'; // <p id="p-id">ABC</p>
// 修改CSS爲: color: #ff0000, font-weight: bold
P.style.color = '#ff0000'; P.style.fontWeight = 'bold'
插入DOMrem
若是這個DOM節點是空的,直接使用innerHTML = '<span>child</span>'就能夠修改DOM節點的內容get
若是這個DOM節點不是空的,那就不能這麼作,由於innerHTML會直接替換掉原來的全部子節點。
使用appendChild
把<p id="js">JavaScript</p>添加到<div id="list">的最後一項: <!-- HTML結構 -->
<p id="js">JavaScript</p>
<div id="list">
<p id="java">Java</p>
<p id="python">Python</p>
<p id="scheme">Scheme</p>
</div>
var js = document.getElementById('js'), list = document.getElementById('list'); list.appendChild(js);
<!-- 獲得的結果是: --> <div id="list"> <p id="java">Java</p> <p id="python">Python</p> <p id="scheme">Scheme</p> <p id="js">JavaScript</p> </div>
使用insertBefore
從零建立一個新的節點,把Haskell插入到Python以前: var list = document.getElementById('list'), ref = document.getElementById('python'), haskell = document.createElement('p'); haskell.id = 'haskell'; haskell.innerText = 'Haskell'; list.insertBefore(haskell, ref); <!-- HTML結構 -->
<div id="list">
<p id="java">Java</p>
<p id="haskell">Haskell</p>
<p id="python">Python</p>
<p id="scheme">Scheme</p>
</div>
刪除DOM
要刪除一個節點,首先要得到該節點自己以及它的父節點,而後,調用父節點的removeChild把本身刪掉:
// 拿到待刪除節點:
var self = document.getElementById('to-be-removed'); // 拿到父節點:
var parent = self.parentElement; // 刪除:
var removed = parent.removeChild(self); removed === self; // true