首先了解parentNode,parentElement,childNodes,children四大屬性之前,必須對Dom樹有一定的了解,在Dom文檔結構中,HTML頁面每一部分都是由節點組成的,節點的類型一共有3種,元素節點,文本節點,屬性節點,從圖中可以看出屬性節點屬於元素節點的分支,一般不常考慮,
下來詳細介紹,childNodes,childern,
childNodes指的是返回當前元素子節點的所有類型節點,其中連空格和換行符都會默認文本節點,代碼如下:
打印結果:
其中空格和文本均打印為文本節點,這里有一個重點要說明一下!!!
之前說childNodes返回的是所有節點的數組,但是如果我給你li元素添加屬性會發現元素的長度總長度並沒有改變,也就是說在childNodes只會返回文本和元素的節點,並不能返回屬性節點!!!
childern指的是返回當前元素的所有元素節點,代碼如下
執行代碼如下:
children很直觀的反應了返回元素節點的屬性。
接下來講解:parentNode,parentElement,
parentNode:顧名思義-父節點
parentElement:顧名思義-父元素
兩者在通常情況下都是一樣的,因為包含元素的節點只有可能是元素節點,這里可能會有一個誤區,有些人可能會想文本節點是否可以包含元素節點,來作為父節點,這里是不行的,文本節點只是文本本身,自身算一個節點,文本節點的父節點直接是元素節點。
那下面我們就說一下,parentNode,parentElement,的特例,
這里運行結果是一致的,他們的祖宗元素都是HTML,但是我們試着想一下,再往上一層,就是根部document了,並不是元素,我們可以一起來看一下下面的代碼
執行代碼如下:
這里的唯一區別就出來了,因為parentElement找的是元素,因此當找到根部document時候就是出現值為null的報錯,而且parentNode找的是節點,當然就可以顯示出來了!