国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

DOM操作

Clect / 3301人閱讀

摘要:基本介紹文檔對象模型是和文檔的編程接口。提供了一系列的方法可以進行元素的增刪改查操作查詢元素方法返回匹配指定屬性的元素節點。返回值是一個對象,也就是說,搜索結果是一個動態集合,任何元素的變化都會實時反映在返回的集合中。刪除指定的類值。

1基本介紹

文檔對象模型 (DOM) 是HTML和XML文檔的編程接口。它給文檔(結構樹)提供了一個結構化的表述并且定義了一種方式—程序可以對結構樹進行訪問,以改變文檔的結構,樣式和內容。
DOM 提供了一種表述形式將文檔作為一個結構化的節點組以及包含屬性和方法的對象。從本質上說,它將web 頁面和腳本或編程語言連接起來了。

從以上論述,我們大概知道:

文檔對象模型是HTML和XML文檔的編程接口(將web頁面和腳本連接了起來);

提供了一種表述形式將文檔作為一個結構化的節點組以及包含屬性和方法的對象;

為測試方便,先構建一個結構樹

document對象

每個載入瀏覽器的HTML文檔都會成為document對象。document對象包含了文檔的基本信息,我們可以通過JavaScript對HTML頁面中的所有元素進行訪問、修改。

document對象具有一些常用的屬性:

doctype屬性

在書寫HTML文檔的時候第一句一般都是doctype聲明,可以通過document對象獲取,沒有則返回null;

head、body屬性

通過訪問documen的head屬性或者body屬性來獲得文檔樹的head節點,以及body節點,這兩個節點都是包括該元素的字節點的;

activeElement屬性

activeElement屬性返回當前文檔中獲得焦點的那個元素。

用戶通常可以使用tab鍵移動焦點,使用空格鍵激活焦點,比如如果焦點在一個鏈接上,此時按一下空格鍵,就會跳轉到該鏈接

documentURI、domain、lastModified三個屬性

1.documentURI屬性返回當前文檔的網址

2.domain屬性返回文檔域名

3.lastModified返回當前文檔的最后修改時間

location屬性

location屬性返回一個只讀對象,提供了當前文檔的URL信息

title、characterSet屬性

title屬性返回當前文檔的標題,該屬性是可寫的

characterSet屬性返回渲染當前文檔的字符集

readyState

readyState屬性返回當前文檔的狀態,共有三種可能的值

loading:加載HTML代碼階段,尚未完成解析

interactive:加載外部資源階段

complete:全部加載完成

compatMode

compatMode屬性返回瀏覽器處理文檔的模式,可能的值為

BackCompat:向后兼容模式,也就是沒有添加DOCTYPE

CSS1Compat:嚴格模式,添加了DOCTYPE

cookie

cookie是存儲在客戶端的文本;

innerText

innerText是一個可寫屬性,返回元素內包含的文本內容,在多層次的時候會按照元素由淺到深的順序拼接其內容;

以之前構建的文檔樹為例,,返回了id為purchase元素節點下的文本內容.

innerHTML、outerHTML屬性

innerHTML屬性作用和innerText類似,但是不是返回元素的文本內容,而是返回元素的HTML結構,在寫入的時候也會自動構建DOM;

outerHTML 返回內容還包括本身;

待補充.......................

2Element對象

除了document對象,在DOM中最常用的就是Element對象了,Element對象表示HTML元素。
DOM提供了一系列的方法可以進行元素的增、刪、改、查操作;

查詢元素

getElementById()
getElementById方法返回匹配指定ID屬性的元素節點。如果沒有發現匹配的節點,則返回null。這也是獲取一個元素最快的方法

getElementsByClassName()
getElementsByClassName方法返回一個類似數組的對象(HTMLCollection類型的對象),包括了所有class名字符合指定條件的元素(搜索范圍包括本身),元素的變化實時反映在返回結果中。這個方法不僅可以在document對象上調用,也可以在任何元素節點上調用。

getElementsByClassName方法的參數,可以是多個空格分隔的class名字,返回同時具有這些節點的元素。

getElementsByTagName()
getElementsByTagName方法返回所有指定標簽的元素(搜索范圍包括本身)。返回值是一個HTMLCollection對象,也就是說,搜索結果是一個動態集合,任何元素的變化都會實時反映在返回的集合中。這個方法不僅可以在document對象上調用,也可以在任何元素節點上調用。

getElementsByName()
getElementsByName方法用于選擇擁有name屬性的HTML元素,比如form、img、frame、embed和object,返回一個NodeList格式的對象,不會實時反映元素的變化。

以下兩種方法要考慮兼容性的問題

querySelector()
querySelector方法返回匹配指定的CSS選擇器的元素節點。如果有多個節點滿足匹配條件,則返回第一個匹配的節點。如果沒有發現匹配的節點,則返回null。

querySelector方法無法選中CSS偽元素。

querySelectorAll()
querySelectorAll方法返回匹配指定的CSS選擇器的所有節點,返回的是NodeList類型的對象。NodeList對象不是動態集合,所以元素節點的變化無法實時反映在返回結果中。

創建元素

createElement()
createElement方法用來生成HTML元素節點。

createElement方法的參數為元素的標簽名,即元素節點的tagName屬性。如果傳入大寫的標簽名,會被轉為小寫。如果參數帶有尖括號(即<和>)或者是null,會報錯。

createTextNode()
createTextNode方法用來生成文本節點,參數為所要生成的文本節點的內容。

createDocumentFragment()
createDocumentFragment方法生成一個DocumentFragment對象。

DocumentFragment對象是一個存在于內存的DOM片段,但是不屬于當前文檔,常常用來生成較復雜的DOM結構,然后插入當前文檔。這樣做的好處在于,因為DocumentFragment不屬于當前文檔,對它的任何改動,都不會引發網頁的重新渲染,比直接修改當前文檔的DOM有更好的性能表現。

修改元素

appendChild()
在元素末尾添加元素

insertBefore()
在某個元素之前插入元素

replaceChild()
replaceChild()接受兩個參數:要插入的元素和要替換的元素

刪除元素

刪除元素使用removeChild()方法即可

clone元素
cloneNode()方法用于克隆元素,方法有一個布爾值參數,傳入true的時候會深復制,也就是會復制元素及其子元素(IE還會復制其事件),false的時候只復制元素本身

屬性操作

getAttribute()
getAttribute()用于獲取元素的attribute值

createAttribute()
createAttribute()方法生成一個新的屬性對象節點,并返回它。

createAttribute方法的參數name,是屬性的名稱。

setAttribute()
setAttribute()方法用于設置元素屬性

romoveAttribute()
removeAttribute()用于刪除元素屬性

element.attributes
當然上面的方法做的事情也可以通過類操作數組屬性element.attributes來實現

復習部分

題目1: dom對象的innerText和innerHTML有什么區別?

dom對象的innerText和innerHTML屬性一個是輸出元素節點的文本,一個是輸出該節點下的HTML結構,差異可以通過以下實例驗證:

題目2: elem.children和elem.childNodes的區別?

elem.children 和elem.childNodes區別在于:

elem.children主要返回的是當前元素節點的所有子元素節點;

elem.childNodes主要返回的是當前元素節點的所有子節點(包括元素節點,屬性節點以及文本節點);

題目3:查詢元素有幾種常見的方法?ES5的元素選擇方法是什么?

查詢元素有3種常見的方法

element.getElementById()方法
返回匹配指定的ID屬性的元素節點;

element.getElementsByClassName()方法
返回HTML collection類型的對象,該對象形式類似于數組,包括了所有class名字符合匹配條件的元素(搜索范圍包括本身),該方法不僅可以在document對象上使用,也可以在任意的元素節點上使用;

element.getElementsByTagName()方法
返回所有指定標簽的元素(搜索范圍包括本身),返回值為HTML Collection 對象,該方法不僅在document對象中調用,而且可以在任意的元素節點上調用;

element.getElementsByName()方法
該方法用于選擇具有name屬性的HTML元素,返回一個NodeLIst格式的對象,不會實時反映元素的變化;

ES5的元素選擇方法為:

querySelectot()
該方法返回匹配指定的css選擇器的元素節點,如果有多個元素節點滿足條件,則返回匹配到的第一個元素節點;

querySelectorAll()
該方法返回匹配指定的css選擇器的所有節點,返回的是NodeList類型的對象;

題目4:如何創建一個元素?如何給元素設置屬性?如何刪除屬性

創建元素: 通過createElement()方法來生成HTML元素節點;

設置屬性: 通過setAttribute()方法用于設置元素屬性;
刪除屬性: 通過removeAttribute()方法來刪除元素屬性;

題目5:如何給頁面元素添加子元素?如何刪除頁面元素下的子元素?

通過元素的appendChild()方法給元素添加子元素,添加到元素末尾。

通過元素的removeChild()方法刪除元素的子元素。

題目6: element.classList有哪些方法?如何判斷一個元素的 class 列表中是包含某個 class?如何添加一個class?如何刪除一個class?

add( String [, String] ) 添加指定的類值。如果這些類已經存在于元素的屬性中,那么它們將被忽略。

remove( String [,String] ) 刪除指定的類值。

item ( Number )按集合中的索引返回class值。

toggle ( String [, force] ) 當只有一個參數時:切換 class value; 即如果類存在,則刪除它并返回false,如果不存在,則添加它并返回true。
當存在第二個參數時:如果第二個參數的計算結果為true,則添加指定的類值,如果計算結果為false,則刪除它

contains( String ) 檢查元素的類屬性中是否存在指定的類值。

使用contains方法判斷一個元素的class中是否包含某個class。add添加一個class,remove刪除一個class。

  

題目7: 如何選中如下代碼所有的li元素? 如何選中btn元素?

  

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/83939.html

相關文章

  • react虛擬dom機制與diff算法

    摘要:的一個突出特點是擁有極速地渲染性能。該功能依靠的就是研發團隊弄出的虛擬機制以及其獨特的算法。在的算法下,在同一位置對比前后節點只要發現不同,就會刪除操作前的節點包括其子節點,替換為操作后的節點。 React的一個突出特點是擁有極速地渲染性能。該功能依靠的就是facebook研發團隊弄出的虛擬dom機制以及其獨特的diff算法。下面簡單解釋一下react虛擬dom機制和diff算法的實現...

    jzman 評論0 收藏0
  • 前端頁面卡頓、也許是DOM操作惹的禍?

    摘要:界面上的更改都是通過操作實現的,并不是通過傳統的刷新頁面實現的。操作優化的總原則是盡量減少操作。通過在文檔片段上進行操作,可以降低操作對頁面性能的影響,這種方式是創建一個文檔片段,并在此片段上進行必要的操作,操作完成后將它附加在頁面中。 界面上UI的更改都是通過DOM操作實現的,并不是通過傳統的刷新頁面實現 的。盡管DOM提供了豐富接口供外部調用,但DOM操作的代價很高,頁面前端代碼的...

    AnthonyHan 評論0 收藏0
  • 虛擬DOM

    摘要:什么是虛擬舉例說明如果網頁中有一個表格,表頭是姓名,年級,分數。即我們用虛擬的結構替換需要處理的結構,對虛擬的進行操作之后再進行渲染,就成為了真實的數據。當狀態變更的時候用修改后的新渲染的的對象和舊的虛擬對象作對比,記錄著兩棵樹的差異。 虛擬DOM 可以看看這個文章如何理解虛擬DOM? - 戴嘉華的回答 - 知乎 https://www.zhihu.com/questio... 深度剖...

    yanwei 評論0 收藏0
  • 虛擬DOM

    摘要:什么是虛擬舉例說明如果網頁中有一個表格,表頭是姓名,年級,分數。即我們用虛擬的結構替換需要處理的結構,對虛擬的進行操作之后再進行渲染,就成為了真實的數據。當狀態變更的時候用修改后的新渲染的的對象和舊的虛擬對象作對比,記錄著兩棵樹的差異。 虛擬DOM 可以看看這個文章如何理解虛擬DOM? - 戴嘉華的回答 - 知乎 https://www.zhihu.com/questio... 深度剖...

    alin 評論0 收藏0
  • 虛擬DOM與DIFF算法學習

    摘要:比較虛擬與的差異,以及對節點的操作,其實就是樹的差異比較,就是對樹的節點進行替換。忽略掉這種特殊的情況后,大膽的修改了算法按直系兄弟節點比較比較。這當中對比的細節才是整個算法最精粹的地方。 一、舊社會的頁面渲染 ???????在jQuery橫行的時代,FEer們,通過各種的方式去對頁面的DOM進行操作,計算大小,變化,來讓頁面生動活潑起來,豐富的DOM操作,讓一個表面簡單的頁面能展示出...

    codergarden 評論0 收藏0
  • JS基礎篇--JS的DOM操作 - 你真的了解嗎?

    摘要:摘要想稍微系統的說說對于的操作把和常用操作的內容歸納成思維導圖方便閱讀同時加入性能上的一些問題前言在前端開發的過程中極為重要的一個功能就是對對象的操作無論增刪改查在前端頁面操作這一范圍內都是比較消耗性能的如何高效率的便捷的操作這就是本文要講 摘要 想稍微系統的說說對于DOM的操作,把Javascript和jQuery常用操作DOM的內容歸納成思維導圖方便閱讀,同時加入性能上的一些問題....

    DirtyMind 評論0 收藏0

發表評論

0條評論

Clect

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<