previousElementSibling 屬性
previousElementSibling可以獲取節點緊鄰的上一個同級元素節點。
為了便於記憶和理解,previousElementSibling可以分解成三個單詞:
(1).previous:前一個。
(2).element:元素。
(3).sibling:兄弟。
由此可以得出,此屬性返回的元素必須要滿足三個條件:
(1).必須是元素節點。
(2).必須是同級節點。
(3).必須是緊鄰的上一個節點。
如果要獲取的元素節點不存在,那麼此屬性返回null。
功能與previousSibling屬性類似,唯一的不同是:
previousSibling沒有對節點的型別做限定,而previousElementSibling限定必須是元素節點。
語法結構:
[JavaScript] 純文字檢視 複製程式碼prevElemNode = node.previousElementSibling
瀏覽器相容:
(1).IE9+瀏覽器支援此屬性。
(2).edge瀏覽器支援此屬性。
(3).谷歌瀏覽器支援此屬性。
(4).opera瀏覽器支援此屬性。
(5).火狐瀏覽器支援此屬性。
(6).safria瀏覽器支援此屬性。
程式碼例項:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> window.onload=function(){ let oli = document.getElementsByTagName("li")[1]; let oshow = document.getElementById("show"); let previousEleLi = oli.previousElementSibling; oshow.innerHTML = previousEleLi.innerHTML; } </script> </head> <body> <ul> <li>螞蟻部落一</li> <li>螞蟻部落二</li> <li>螞蟻部落三</li> <li>螞蟻部落四</li> <li>螞蟻部落五</li> </ul> <div id="show"></div> </body> </html>
程式碼執行效果截圖如下:
第二個li元素的上一個同級元素節點自然是第一個裡元素。
然後將第一個li元素的內容寫入到div中。
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> window.onload=function(){ let oul = document.getElementsByTagName("ul")[0]; let childNodes=oul.childNodes; let oshow = document.getElementById("show"); console.log(childNodes[4].nodeType); let previousEleLi = childNodes[4].previousElementSibling; oshow.innerHTML = previousEleLi.innerHTML; } </script> </head> <body> <ul> <li>螞蟻部落一</li> <li>螞蟻部落二</li> <li>螞蟻部落三</li> <li>螞蟻部落四</li> <li>螞蟻部落五</li> </ul> <div id="show"></div> </body> </html>
首先看一下谷歌開發者工具控制列印內容:
控制檯列印內容是3,說明ul元素下索引值為4的子節點是文字節點。
在標準瀏覽器中,空格與換行被解讀為文字節點。
再來看頁面div中顯示的內容,截圖如下:
很多朋友下意識的認為previousElementSibling等類似屬性的引用者總是元素節點物件。
其實這種想法是錯誤的,難道只有元素節點才有緊鄰的統計子節點嗎,文字節點或者註釋節點也是可以的。
這裡只是給一些沒有注意到這一點的朋友做一個提醒,或許能夠避免一些不必要的錯誤。
相關文章
- JavaScript previousElementSiblingJavaScript
- CMake 屬性之全域性屬性
- defer 屬性和 async 屬性
- CMake 屬性之目錄屬性
- CMake 屬性之目標屬性
- CSS 屬性篇(七):Display屬性CSS
- Python - 物件導向程式設計 - 公共屬性、保護屬性、私有屬性Python物件程式設計
- 根據屬性字串獲取屬性值字串
- CAD屬性編輯操作——物件屬性教程物件
- CSS字型屬性和文字屬性詳解CSS
- Python 類的屬性與例項屬性Python
- python物件屬性管理(2):property管理屬性Python物件
- ref屬性
- HTML 屬性HTML
- DOM屬性
- Property屬性
- onreadystatechange 屬性
- jQuery 屬性jQuery
- background 屬性
- 私有屬性
- background屬性
- allowfullscreen 屬性
- cssRules 屬性CSS
- translucent屬性
- parentRule 屬性
- parentStyleSheet屬性
- cssText 屬性CSS
- WPF 之 依賴屬性與附加屬性(五)
- jQuery設定disabled屬性與移除disabled屬性jQuery
- 框架(frameset),全域性屬性框架
- logback 的屬性
- 17 ### 屬性方法
- 計算屬性
- BGP屬性 ASPath
- 靜態屬性
- 屬性和方法
- Android 《CardView 屬性》AndroidView
- blender 骨骼屬性