一计维、js獲取子節(jié)點的方式
1.通過獲取dom方式直接獲取子節(jié)點
其中test的父標(biāo)簽id的值袜香,div為標(biāo)簽的名字。getElementsByTagName是一個方法鲫惶。返回的是一個數(shù)組蜈首。在訪問的時候要按數(shù)組的形式訪問。
var a = document.getElementById("test").getElementsByTagName("div");
2.通過childNodes獲取子節(jié)點
使用childNodes獲取子節(jié)點的時候欠母,childNodes返回的是子節(jié)點的集合欢策,是一個數(shù)組的格式。他會把換行和空格也當(dāng)成是節(jié)點信息赏淌。
var b =document.getElementById("test").childNodes;
為了不顯示不必須的換行的空格踩寇,我們?nèi)绻褂胏hildNodes就必須進行必要的過濾俺孙。通過正則表達式式取掉不必要的信息荣茫。下面是過濾掉
//去掉換行的空格
for(var i=0; i<b.length;i++){
if(b[i].nodeName == "#text" && !/\s/.test(b.nodeValue)){
document.getElementById("test").removeChild(b[i]);
}
}
//打印測試
for(var i=0;i<b.length;i++){
console.log(i+"---------")
console.log(b[i]);
}
//補充 document.getElementById("test").childElementCount; 可以直接獲取長度 同length
4.通過children來獲取子節(jié)點
利用children來獲取子元素是最方便的旨剥,他也會返回出一個數(shù)組该押。對其獲取子元素的訪問只需按數(shù)組的訪問形式即可烟具。
var getFirstChild = document.getElementById("test").children[0];
5.獲取第一個子節(jié)點
firstChild來獲取第一個子元素,但是在有些情況下我們打印的時候會顯示undefined荔睹,這是什么情況呢腊尚?劝篷?其實firstChild和childNodes是一樣的,在瀏覽器解析的時候會把他當(dāng)換行和空格一起解析哈恰,其實你獲取的是第一個子節(jié)點,只是這個子節(jié)點是一個換行或者是一個空格而已。那么不要忘記和childNodes一樣處理呀豫喧。
var getFirstChild = document.getElementById("test").firstElementChild;
6.firstElementChild獲取第一個子節(jié)點
使用firstElementChild來獲取第一個子元素的時候缕棵,這就沒有firstChild的那種情況了篙程。會獲取到父元素第一個子元素的節(jié)點 這樣就能直接顯示出來文本信息了。他并不會匹配換行和空格信息氮发。
var getFirstChild = document.getElementById("test").firstElementChild;
7.獲取最后一個子節(jié)點
lastChild獲取最后一個子節(jié)點的方式其實和firstChild是類似的批狐。同樣的lastElementChild和firstElementChild也是一樣的。不再贅余困乒。
var getLastChildA = document.getElementById("test").lastChild;
var getLastChildB = document.getElementById("test").lastElementChild;
二、js獲取父節(jié)點的方式
1.parentNode獲取父節(jié)點
獲取的是當(dāng)前元素的直接父元素。parentNode是w3c的標(biāo)準(zhǔn)昌粤。
var p = document.getElementById("test").parentNode;
2.parentElement獲取父節(jié)點
parentElement和parentNode一樣袱讹,只是parentElement是ie的標(biāo)準(zhǔn)。
var p1 = document.getElementById("test").parentElement;
3.offsetParent獲取所有父節(jié)點
一看offset我們就知道是偏移量 其實這個是于位置有關(guān)的上下級 ,直接能夠獲取到所有父親節(jié)點久橙, 這個對應(yīng)的值是body下的所有節(jié)點信息。
var p2 = document.getElementById("test").offsetParent;
三甚带、js獲取兄弟節(jié)點的方式
1.通過獲取父親節(jié)點再獲取子節(jié)點來獲取兄弟節(jié)點
var brother1 = document.getElementById("test").parentNode.children[1];
2.獲取上一個兄弟節(jié)點
在獲取前一個兄弟節(jié)點的時候可以使用previousSibling和previousElementSibling碉输。他們的區(qū)別是previousSibling會匹配字符枝哄,包括換行和空格,而不是節(jié)點蓖租。previousElementSibling則直接匹配節(jié)點球昨。
var brother2 = document.getElementById("test").previousElementSibling;
var brother3 = document.getElementById("test").previousSibling;
3.獲取下一個兄弟節(jié)點
同previousSibling和previousElementSibling,nextSibling和nextElementSibling也是類似的。
var brother4 = document.getElementById("test").nextElementSibling;
var brother5 = document.getElementById("test").nextSibling;