首先,我們可以使用children屬性來獲取一個(gè)元素的所有子節(jié)點(diǎn):
var container = document.getElementById('container'); var children = container.children; console.log(children);
上面的代碼會(huì)輸出container元素中所有的子節(jié)點(diǎn)。如果container元素沒有任何子元素,則children屬性返回一個(gè)空數(shù)組。下面的例子可以幫助你更好地了解這個(gè)屬性的用法:
var ul = document.createElement('ul'); var li1 = document.createElement('li'); var li2 = document.createElement('li'); ul.appendChild(li1); ul.appendChild(li2); var container = document.getElementById('container'); container.appendChild(ul); console.log(container.children); //輸出:[object HTMLUListElement] console.log(ul.children); //輸出:[object HTMLLIElement, object HTMLLIElement]
上面的代碼創(chuàng)建了一個(gè)包括兩個(gè)List Item的無序列表,然后將該列表添加到一個(gè)名為container的元素中。最后,我們分別輸出container和ul元素中所有的子節(jié)點(diǎn)。你可以看到,container元素只包括一個(gè)子元素(即ul元素),而ul元素則包括兩個(gè)子元素(即li1和li2)。
如果你想獲取某個(gè)元素的第一個(gè)或最后一個(gè)子節(jié)點(diǎn),你可以使用firstElementChild和lastElementChild屬性:
var container = document.getElementById('container'); var firstChild = container.firstElementChild; var lastChild = container.lastElementChild; console.log(firstChild); //輸出第一個(gè)子元素 console.log(lastChild); //輸出最后一個(gè)子元素
如果該元素沒有任何子元素,firstElementChild和lastElementChild屬性均返回null。
如果你想在一個(gè)元素中插入新的子元素,可以使用appendChild()函數(shù),該函數(shù)將新元素添加到該元素的子元素末尾:
var container = document.getElementById('container'); var newDiv = document.createElement('div'); newDiv.innerText = 'This is a new div!'; container.appendChild(newDiv); //將新元素添加到container元素中
如果你想在一個(gè)元素中插入一個(gè)新元素,并將其插入到該元素的第一個(gè)子元素的前面,你可以使用insertBefore()函數(shù):
var container = document.getElementById('container'); var firstChild = container.firstElementChild; var newDiv = document.createElement('div'); newDiv.innerText = 'This is a new div!'; container.insertBefore(newDiv, firstChild); //將新元素插入到container元素的第一個(gè)子元素前面
當(dāng)然,你也可以通過遍歷子節(jié)點(diǎn)來訪問、判斷和修改每一個(gè)子節(jié)點(diǎn)。下面是一個(gè)遍歷列表所有子節(jié)點(diǎn)的例子:
var ul = document.getElementById('list'); var lis = ul.children; for (var i = 0; i< lis.length; i++) { console.log(lis[i]); //輸出當(dāng)前子節(jié)點(diǎn) }
上面的代碼將遍歷包含在一個(gè)無序列表中的所有子節(jié)點(diǎn),并依次輸出它們的信息。
總之,JavaScript中的children屬性可以極大地簡化訪問和操作DOM的過程。通過運(yùn)用上述的實(shí)例,我們可以更好地理解和應(yīng)用這個(gè)重要的屬性。