首先,我們將最后段落賦值給變量my:
var my = document.getElementById('closer');
接下來,我們就能夠輕松地通過修改對象的innerHTML值來修改段落中的文本:
由於innerHTML可以接受任何HTML代碼串,所以我們也可以用它在當前的DOM樹中再新建一個em節點:
除此之外,我們還可以通過修改既定文本類節點的nodeValue屬性來實現相關的文本修改。
修改樣式
元素對象中有個style屬性,這是一個用來反映當前CSS樣式的屬性。
另外,CSS屬性中的短線在JavaScript中是不可用的。對於這種情況,我們只需要直接跳過並將下一個單純的首字母大寫即可。例如,padding-top可以寫成paddingTop、margin-left可以寫成marginLeft等,以此類推。
新建節點
通常情況下,我們可以用createElement()和createTextNode()這兩個方法來創建新節點。而appendChild()方法則可以用來將新節點添加到DOM樹結構中。
如果你想將下面的HTML代碼加入body元素后端:
<p>one mor paragraph<strong>bold</strong></p>
讓我們來看看完成這個代碼應該怎么寫
//新建一個節點p var myp = document.createElement('p'); //創建一個文本節點 var myt = document.createTextNode('one more paragraph'); myp.appendChild(myt); //創建一個strong和另外一個文本節點 var str = document.createElement('strong'); str.appendChild(document.createTextNode('bold')); myp.appendChild(str); //添加到body中 document.body.appendChild(myp);
cloneNode()
另外,拷貝現有節點也是一種創建節點的方法。這需要用到cloneNode()方法,該方法有一個布爾類型的參數(true=深拷貝,包括所有子節點;false=淺拷貝,只針對當前節點)。
這時候,我們在頁面上不會看出有什么變化,因為淺拷貝只復制了p節點,並沒有包含它的任何子節點。這意味着該段落中文本並沒有復制過來。但如果我們現在創建的是一份深拷貝,那么以P元素為首的整個DOM子樹都將會被拷貝過來。
insertBefore()
通過appendChild()方法,我們只能將新節點添加到指定節點的末端。如果想更精確地控制插入節點的位置,我們還可以使用insertBefore()方法。該方法與appendChild()基本相同,只不過它多了一個額外參數,該參數可以用於指定將新節點插入哪一個元素的前面。
document.body.insertBefore(document.createTextNode('boo!'),document.body.firstChild);
移除節點
想從DOM樹中移除一個節點,我們可以調用removeChild()。下面,我們移除第二段落,如果我們稍后還需用到被移除的節點的話,可以保存該方法的返回值。
除此之外,還有一個replaceChild()方法,該方法可以在移除一個節點的同時將另一個節點放在該位置。
刪除某個指定節點所有子節點的函數:
function removeAll(n){ while(n.firstChild){ n.removeChild(n.firstChild); } }