JS獲取子節(jié)點、父節(jié)點和兄弟節(jié)點的若干種方式

一计维、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;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市夜惭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌晦譬,老刑警劉巖尤莺,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柔纵,死亡現(xiàn)場離奇詭異鸭叙,居然都是意外死亡嗡善,警方通過查閱死者的電腦和手機袁铐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蛛芥,你說我怎么就攤上這事赡鲜∫辏” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長偷俭。 經(jīng)常有香客問我透揣,道長,這世上最難降的妖魔是什么密幔? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任偎箫,我火速辦了婚禮淹办,結(jié)果婚禮上齐遵,老公的妹妹穿的比我還像新娘。我一直安慰自己糜烹,他們只是感情好愕乎,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著痢畜,像睡著了一般垛膝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上丁稀,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天吼拥,我揣著相機與錄音,去河邊找鬼线衫。 笑死凿可,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的授账。 我是一名探鬼主播枯跑,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼白热!你這毒婦竟也來了敛助?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤屋确,失蹤者是張志新(化名)和其女友劉穎纳击,沒想到半個月后续扔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡焕数,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年纱昧,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片堡赔。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡识脆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出善已,到底是詐尸還是另有隱情灼捂,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布雕拼,位于F島的核電站纵东,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏啥寇。R本人自食惡果不足惜偎球,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望辑甜。 院中可真熱鬧衰絮,春花似錦、人聲如沸磷醋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽邓线。三九已至淌友,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間骇陈,已是汗流浹背震庭。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留你雌,地道東北人器联。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像婿崭,于是被迫代替她去往敵國和親拨拓。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 上一節(jié)氓栈,咱們整理了DOM系列中的第一篇渣磷,主要介紹瀏覽器與DOM相關(guān)的知識。從標(biāo)題中我們可以看出來授瘦,今天所要學(xué)的東西...
    一個敲代碼的前端妹子閱讀 11,529評論 2 17
  • 什么是DOM醋界?DOM 是 JavaScript 操作網(wǎng)頁的接口祟身,全稱為“文檔對象模型”(Document Obje...
    浮若年華_7a56閱讀 263評論 0 0
  • 第3章 基本概念 3.1 語法 3.2 關(guān)鍵字和保留字 3.3 變量 3.4 數(shù)據(jù)類型 5種簡單數(shù)據(jù)類型:Unde...
    RickCole閱讀 5,096評論 0 21
  • JS中級課程 (一)DOM元素的具體操作 DOM的概念及節(jié)點類型 DOM:全稱Document Object Mo...
    我擁抱著我的未來閱讀 1,658評論 0 1
  • 基本概念 DOM DOM 是 JavaScript 操作網(wǎng)頁的接口,全稱為“文檔對象模型”(Document Ob...
    許先生__閱讀 857評論 0 1