DOM節點的修改


首先,我們將最后段落賦值給變量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);
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM