元素可以有任意數(shù)目的子節(jié)點(diǎn)和后代節(jié)點(diǎn),因?yàn)樵乜梢允瞧渌氐淖庸?jié)點(diǎn)。元素的childNodes屬性中包含了它的所有子節(jié)點(diǎn),這些子節(jié)點(diǎn)有可能是元素、文本節(jié)點(diǎn)、注釋或處理指令。
不同瀏覽器在看待這些節(jié)點(diǎn)方面存在顯著的不同,以下面的代碼為例:
ltem l
ltem 2
ltem 3
對(duì)于這段代碼,
元素在任何瀏覽器中都會(huì)包含3個(gè)子節(jié)點(diǎn)。如果需要通過(guò)childNodes屬性遍歷子節(jié)點(diǎn),那么一定不要忘記瀏覽器間的這一差別。這意味著在執(zhí)行某項(xiàng)操作以前,通常都要先檢
查一下nodeTpye屬性,如下面的例子所示:
for (var i=0;len=element.childNodes.length;i if (element. childNodes[i].nodeType==1){
//執(zhí)行某些操作
}
}
這個(gè)例子會(huì)循環(huán)遍歷特定元素的每一個(gè)子節(jié)點(diǎn),然后只在子節(jié)點(diǎn)的nodeType等于1(表示是元素節(jié)點(diǎn))的情況下,才會(huì)執(zhí)行某些操作。
如果想通過(guò)某個(gè)特定的標(biāo)簽名取得子節(jié)點(diǎn)或后代節(jié)點(diǎn)該怎么辦呢?實(shí)際上,元素也支持getElement sByTagName()方法。在通過(guò)元素調(diào)用這個(gè)方法時(shí),除了搜索起點(diǎn)是當(dāng)前元素之外,其他
方面都跟通過(guò)document調(diào)用這個(gè)方法相同,因此結(jié)果只會(huì)返回當(dāng)前元素的后代。例如,要想取得前面
元素中包含的所有
元素,可以使用下列代碼:
var ul=document. getElementByld(”myList”);
var items=ul. getElementsByTagName(”li”);
要注意的是,這里
的后代中只包含直接子元素。不過(guò),如果它包含更多層次的后代元素,那么各個(gè)層次中包含的
元素也都會(huì)返回。
本文僅限內(nèi)部技術(shù)人員學(xué)習(xí)交流,不得作于其他商業(yè)用途.希望此文對(duì)廣技人員有所幫助。原創(chuàng)文章出自:南昌網(wǎng)站建設(shè)公司-百恒網(wǎng)絡(luò) http: //www.gimmickmag.com 如轉(zhuǎn)載請(qǐng)注明出處!