您好,登錄后才能下訂單哦!
本文實例講述了JS獲取子節(jié)點、父節(jié)點和兄弟節(jié)點的方法。分享給大家供大家參考,具體如下:
1. 通過獲取dom方式直接獲取子節(jié)點
其中test的父標簽id的值,div為標簽的名字。getElementsByTagName是一個方法。返回的是一個數(shù)組。在訪問的時候要按數(shù)組的形式訪問。
var a = document.getElementById("test").getElementsByTagName("div");
2. 通過childNodes獲取子節(jié)點
使用childNodes獲取子節(jié)點的時候,childNodes返回的是子節(jié)點的集合,是一個數(shù)組的格式。他會把換行和空格也當成是節(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是一樣的,在瀏覽器解析的時候會把他當換行和空格一起解析,其實你獲取的是第一個子節(jié)點,只是這個子節(jié)點是一個換行或者是一個空格而已。那么不要忘記和childNodes一樣處理呀。
var getFirstChild = document.getElementById("test").firstChild;
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;
1. parentNode獲取父節(jié)點
獲取的是當前元素的直接父元素。parentNode是w3c的標準。
var p = document.getElementById("test").parentNode;
2. parentElement獲取父節(jié)點
parentElement和parentNode一樣,只是parentElement是ie的標準。
var p1 = document.getElementById("test").parentElement;
3. offsetParent獲取所有父節(jié)點
一看offset我們就知道是偏移量 其實這個是于位置有關的上下級 ,直接能夠獲取到所有父親節(jié)點, 這個對應的值是body下的所有節(jié)點信息。
var p2 = document.getElementById("test").offsetParent;
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;
更多關于JavaScript相關內(nèi)容感興趣的讀者可查看本站專題:《JavaScript操作DOM技巧總結(jié)》、《JavaScript頁面元素操作技巧總結(jié)》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學運算用法總結(jié)》
希望本文所述對大家JavaScript程序設計有所幫助。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。