通過css類/選擇器選取元素文件結構和遍歷元素樹的文件
通過css類選取元素
html所有的元素擁有class屬性,該屬性會對元素進行分組,標識為某一組。
js中使用className屬性來儲存HTML的class的屬性值
var NodeList = document.getElementById("first")
close.log(NodeList.class)
儘管如此,js還定義了一個方法,即一個getElementsByClassName(),是基於class屬性值中的識別符號來選取成組的文件元素
還有一個類似的getElementsByTagName()的方法也是獲取一個組,返回的是一組的內容即NodeList。返回的是類陣列。
一個使用getElementsByClassName()的例子
// 查詢其class屬性值中包含warning的所有元素
var warnings = document.getElementsByClassName("warning");
// 查詢以log命名並且含有error和fatal類的元素的所有後代
var log = document.getElementById("log");
var fatal = log.getElementByClassName("fatal error"); // 先獲取id為log,在獲取class為fatal error的元素
一個相容,瀏覽器根據!doctype來進行選擇怪異模式,和標準模式的,怪異模式是為了向後相容而存在的,標準模式不是(相容以及不太重要了,但是還要知道一點,這是ie8的問題,但願再過幾年直接win7也沒有了)
通過css選擇器選擇元素
css樣式表可以進行選擇,這裡僅僅是一些常見的css選擇器
#nav // id = nav 的元素
div // 選擇div元素
.warning // 選擇class屬性為waring的元素
// 基於屬性值選取元素
p[lang="fr"] // 所有語言為fr的元素
*[name="x"] // 所有包含name="x"的屬性的元素
// 將選擇器進行組合使用
span.fatal.error // 選擇class中包含fatal和error的span元素
span[lang="fr"].warning // 所有使用法語,並且class中包含warning的span元素
// 選擇器指定文件結構
#log span // id 為log元素的後代元素中的所有的span元素
#log > span // id 為log元素的子元素中所有的span元素
body>h1:first-child // <body>的子元素中的第一個<h1>元素
// 選擇器組合選擇多個或者組合元素
div, #log // 所有的div元素,以及id為log的元素屬於和關係
// 正則選擇器
a[src^="https"] // 選擇src屬性為https開頭的
a[src$=".pdf"] // 匹配src屬性為.pdf結尾的元素
a[src*="ming"] // 匹配src中包含ming的元素
h5定義了一些選擇api用來通過js來選擇元素
document.querySelector("title")
選擇title元素
document.querySelectorAll("title")
會返回一個類陣列的 節點列表
document.querySelector(":first-line")
選擇一個偽元素,在css中匹配了節點一部分,而不是實際元素。
其中querySelector只會返回匹配的第一個結果,querySelectorAll將會返回全部結果,返回一個類陣列。
document.querySelector(":link")
返回一個頁面上未訪問的連線
document.querySelectorAll(":visited")
選擇一個已經訪問過的,用來獲取使用者在該頁面的一部分的歷史記錄
document.all[]
已經廢棄,不在使用,所以不學習
文件結構和遍歷
一旦從文件中選取了一個元素,將會需要查詢文件與之在結構上相關的部分,(即,父元素,子元素,兄弟元素)。溫帶在概念上為節點物件樹。瀏覽器定義了一個api將會對元素物件樹進行遍歷
作為節點樹的文件
Document物件,以及Element物件和文件中表示文字的Text物件都為Node物件,Node物件定義了一下重要的屬性。
parentNode
獲取該節點的父節點
childNode
只讀型別陣列物件(NodeList物件),它是該節點的子節點的實時表示
firstChild, lastChild
該節點的子節點中的第一個和最後一個
nextSibling,previousSibling
該節點的兄弟節點中的前一個和下一個
nodeType
該節點的型別
一些類 繼承(基類,父類,超類),派生類,子類
這裡以c++為栗子 :基類,父類,超類,指被繼承的類,派生類,子類指繼承於基類的類,在C++中冒號表示繼承,入classA:public:B 表示派生類A從基類B繼承而來。派生類包含基類的所有成員,還包括自身的特有成員,由於繼承關係的存在,派生類和派生類物件訪問基類中的成員就像訪問自己的成員一樣。可以直接使用,但是派生類,仍舊無法訪問基類中的私有成員。C++派生類可以同時從多個基類繼承,java不允許多重繼承,當繼承多個基類的時候,使用,運算子將基類進行分開。
Element
Element是一個通用的基類,所有的Document都繼承自Element
例如
<p>
屬於一個由Element基類繼承的Document的一個節點
text節點
文字內容,即匿名文字所成的節點。
Comment節點
屬於註釋的節點
<!-- 這是註釋內容 -->
Document 節點
一個已經載入好的網頁,並通過入口來操作網頁的內容
DocumentType節點
一個宣告節點
DocumentFragment 節點
表示一個沒有父級檔案的最小文件物件。它被當做一個輕量版的 Document 使用
nodeValue
text節點或者Comment節點文字內容
nodeName
元素的標籤名,以大寫輸出
一個栗子
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
hello word
</body>
</html>
控制檯輸入
document.childNodes[1].childNodes[2].childNode[0]
返回
#text
表示
<body>之前的導致換行符
該html
<!DOCTYPE html><html><head><title></title></head>
<body>hello word</body></html>
繼續重新載入,重新輸入
document.childNodes[1].childNodes[1]
#text
繼續去掉唯一的換行符
<!DOCTYPE html><html><head><title></title></head><body>hello word</body></html>
繼續在控制檯輸入
document.childNodes[1].childNodes[1]
<body style>…</body>
返回body
說明是換行符的問題導致
https://stackoverflow.com/questions/45614337/what-causes-childnodes-to-return-text-instead-of-div
https://stackoverflow.com/questions/21357004/what-are-html-dom-text-elements
作為元素樹的文件
將文件看成Element物件樹,忽視部分文件,text和comment文件(回車,空格,以及註釋節點)
Element的children屬性
第一部分是Element(通用基類)的children屬性,類似於childNodes屬於一個NodeList物件,不同的是children列表只包含Element物件,text和Comment節點沒有children屬性,任何的Element的parentNode(父節點)都是另一個Element,或者是樹根的Document節點
Element的屬性
firstElementChild,lastElementChild
類似firstChild和lastChild,只代表子Element
nextElementSibling,previousElementSibling
類似的nextSibling和previousSibling 代表兄弟節點
childElementCount
子元素的數量,和children。length的值相等
部落格
www.iming.info
相關文章
- CSS3新增選擇器(屬性選擇器、結構偽類選擇器、偽元素選擇器)CSSS3
- CSS 元素選擇器CSS
- CSS選擇器(6)——偽元素CSS
- jQuery選擇器——子元素過濾選擇器jQuery
- HTML表單及CSS選擇器、偽類和偽元素HTMLCSS
- CSS偽類與偽元素選擇器區別CSS
- jQuery選擇器——表單元素過濾選擇器jQuery
- CSS5-選擇器5-子元素選擇器CSS
- CSS中一些利用偽類、偽元素和相鄰元素選擇器的技巧CSS
- CSS E::after 偽元素選擇器CSS
- jQuery子元素過濾選擇器jQuery
- css3 nth-child() 選擇器 (遍歷選擇器的奇偶數)CSSS3
- 使用 CSS 選擇器實現對不含 title 屬性元素的選擇CSS
- jQuery選擇器 標籤選擇元素+css簡單新增移除操作jQueryCSS
- css3偽元素選擇器before 和 after 的使用CSSS3
- jQuery選擇器獲取前幾個元素jQuery
- JS 獲取文件元素JS
- 選擇問題——選取第K小元素
- [js] 根據元素ID遍歷樹形結構,查詢到所有父元素IDJS
- 徹底理解CSS結構偽類選擇器CSS
- 從分類到結構之CSS選擇器CSS
- CSS E::first-line偽元素選擇器CSS
- DOM元素的選擇
- DOM 節點遍歷:掌握遍歷 XML文件結構和內容的技巧XML
- css選擇器分類總結CSS
- CSS樣式中的通用選擇器和偽類選擇器CSS
- css使用偽物件選擇器設定元素內容CSS物件
- 關於二叉樹的前序遍歷、中序遍歷、刪除元素、插入元素二叉樹
- CSS E::before 偽元素選擇符CSS
- CSS的總結(選擇器,偽類等…)CSS
- jQuery 元素操作——遍歷元素jQuery
- bs4的使用 遍歷文件樹
- jQuery選擇器獲取元素並非是動態jQuery
- css選擇器的分類CSS
- jq選擇子元素
- 有趣的CSS題目(10):結構性偽類選擇器CSS
- CSS class 類選擇器CSS
- CSS多類選擇器CSS