摘要:中的所有對象都是以對象的形式實現的。這意味著中的對象與原生對象的行為或活動特點并不一致。該屬性指向表示整個文檔的文檔節點。同時由要插入的節點占據其位置。返回被移除的節點。操作類名操作類名時,需要通過屬性添加刪除和替換類名。
Note:IE中的所有DOM對象都是以COM對象的形式實現的。這意味著IE中的DOM對象與原生Javascript對象的行為或活動特點并不一致。
DOM1級主要定義了HTML和XML的文檔的底層結構。DOM2和DOM3級分為幾個模塊。
DOM2級核心(DOM Level 2 Core):在1級核心基礎上構建,為節點添加了更多方法和屬性
DOM2級視圖(DOM Level 2 Views):為文檔定義了基于樣式信息的不同視圖
DOM2級事件(DOM Level 2 Events):說明了如何使用事件與DOM文檔交互
DOM2級樣式(DOM Level 2 Style):定義了如何以編程方式來訪問和改變CSS樣式信息
DOM2級遍歷和范圍(DOM Level 2 Tranversal and Range):引入了遍歷DOM文檔和選擇其特定部分的新接口。
DOM2級HTML(DOM Level 2 HTML):在1級HTML基礎上構建,添加了更多屬性、方法和新街口。
// 判斷是否支持模塊 var DOM2Core = document.implementation.hasFeature("Core",2.0)DOM2級核心 Node
DOM1級定義了一個Node接口。該接口將由DOM中的所有節點類型實現。
Javascript中的所有節點類型都 繼承自Node類型,因此所有節點類型都共享著相同的基本屬性和方法。
兼容性:除IE外,其他所有瀏覽器都可以訪問到這個類型
節點類型每個節點都有一個nodeType屬性,用于表明節點的類型。
節點類型由在Node類型中定義的12個數值常量來表示,下面列出常用的幾個。
Node.ELEMENT_NODE: 1
Node.TEXT_NODE: 3
Node.COMMENT_NODE: 8
節點信息可以通過nodeName和nodeValue來了解節點信息。這兩個屬性取決于節點的類型。
在使用這兩個節點之前,最好先檢測一下節點類型。
如果節點是一個元素,nodeName中保存的始終是元素的標簽名,而nodeValue值始終為0。
節點關系每個節點都有一個childNodes屬性,其中保存著一個NodeList對象。NodeList對象是一種類數組對象,用于保存一組有序的節點,可以通過位置來訪問這些節點。
hasChildNodes():這個方法在節點包含一個或多個子節點的情況下返回true。
ownerDocument:該屬性指向表示整個文檔的文檔節點。
// 將NodeList對象轉換為數組 var arrayOfNodes = Array.prototype.slice.call(someNode.childNodes,0);
兼容性:IE8以及更早版本將NodeList實現為一個COM對象,因此上面的代碼會導致錯誤。
Note:NdoeList對象的特殊之處在于,它實際上是基于DOM結構動態執行查詢的結果,因此DOM的變化能直接反映在NodeList對象之中。它是有生命的對象,而不是在我們第一次訪問它在某一個瞬間拍下的快照。
操作節點appendChild():用于向childNodes列表的末尾添加一個節點。返回新增的節點。
insertBefore():接收兩個參數:要插入的節點和作為參照的節點。插入節點后,被插入的節點會變成參照節點的前一個同胞節點。同時被方法返回。
replaceChild():接收兩個參數:要插入的節點和要替換的節點。要替換的節點將由這個方法返回并從文檔樹中移除。同時由要插入的節點占據其位置。
removeChild():接收一個參數,即要移除的節點。返回被移除的節點。
這四個方法都是操作的某個節點的子節點,也就是說,要使用這幾個方法必須先取得父節點。另外并不是所有節點都有子節點,如果在不支持子節點的節點上,調用了這些方法,將會導致錯誤。
Note:
如果傳入到appendChild()中的節點已經是文檔的一部分,那結果就是將該節點從原來的位置轉移到新位置。即可以將DOM樹看成是由一系列指針連接起來的,但任何DOM節點也不能同時出現在文檔中的多個位置上。
在使用replaceChild()插入一個節點時,該節點的關系指針都會從被它替換的節點復制過來。從技術上來講,被替換的節點仍然還在文檔中,但它在文檔中已經沒有了自己的位置。同樣的,removeChild()移除的節點也同樣為文檔所有,只不過在文檔中已經沒有了自己的位置。
其他方法有兩個方法是所有類型節點都要的。
cloneNode():用于創建調用這個方法的節點的一個完全相同的副本。接收一個布爾值參數,true:表示執行深復制,也就是復制節點以及整個子節點樹。false:表示執行淺復制,即只復制節點本身。
Note:
deepList.childNodes.length中的差異主要是因為IE8以及更早版本與其他瀏覽器處理空白字符的方式不一樣。IE9以及之前版本不會為空白符創建節點。
cloneNode()方法不會復制添加到DOM節點中的Javascript屬性,例如事件處理程序等。這個方法只復制特性,在明確指定的情況下也復制子節點,其他一切都不會復制。IE在此存在一個bug,即它會復制事件處理程序,所以建議,在復制之前最好先移除事件處理程序。
normalize():處理文檔樹種的文本節點。
Document類型--nodeType=9Javascript通過Document類型表示文檔。HTMLDocument繼承自Document類型
1.document對象是HTMLDocument對象的實例
2.document對象是window對象的一個屬性,可以將其作為全局對象進行訪問。
document instanceof HTMLDocument //true HTMLDocument.__proto__ ==== Document //true
document作為我們操作文檔的一個公共接口存在。
document信息document.URL:包含頁面完整的URL
document.domain:包含頁面的域名
document.referrer:保存著鏈接到當前頁面的那個頁面的URL
在這三個屬性中只有domain是可以設置的。但由于安全方面的限制,也并非可以給domain設置任何值。
不能將這個屬性設置為URL中不包含的域
如果域名一開始是松散的,那么不能將它設置為緊繃的。
// 假設頁面來自p2p.wrox.com域 document.domain = "wrox.com"; // 松散的,成功 document.domain = "nczonline.ne4t" // 出錯 document.domain = "p2p.wrox.com" // 緊繃的,出錯
document.readyState:有兩個可能的值(HTML5新增)
loading:正在加載文檔
complete:已經加載完文檔
document.compatMode:這個屬性的作用是告訴開發人員瀏覽器采用了那些渲染模式(HTML5新增)
值等于"CSS1Compat",表明瀏覽器采用標準模式進行渲染
值等于"BackCompat",表明瀏覽器在混雜模式下進行渲染
document子節點document.documentElement:獲得html元素的引用
document.body:獲得body元素的引用
document.head:獲得head元素的引用(HTML5新增)
document.title:包含title元素的中的文本
document.activeElement:這個屬性始終會引用DOM中當前獲得了焦點的元素(HTML5新增)
Browser compatibility-head
Browser compatibility-activeElement
Document類型為查元素提供了兩種方法,1,2
HTMLDocument類型提供了方法,3
document.getElementById()
document.getElementsByName:這個方法會返回帶有給定name特性的元素,最常用于取得單選按鈕。同樣也返回 HTMLCollection對象。
HTMLCollection對象,可以通過length屬性訪問元素長度,通過[]方括號語法訪問對象中的項。方括號中既可以是數字也可以是字符串的索引值。
創建節點document.createElement():接收一個參數,即要創建元素的標簽名。
document.createTextNode():接收一個參數,要插入節點中的文本。
這些集合都是HTMLCollection對象
document.anchors:包含文檔中帶name特性的>元素
document.forms:包含文檔中所有的
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/78774.html
摘要:是文檔的一種表示結構。這些任務大部分都是基于它。這個實踐的重點是把你在前端練級攻略第部分中學到的一些東西和結合起來。一旦你進入框架部分,你將更好地理解并使用它們。到目前為止,你一直在使用進行操作。它是在前端系統像今天這樣復雜之前編寫的。 本文是 前端練級攻略 第二部分,第一部分請看下面: 前端練級攻略(第一部分) 在第二部分,我們將重點學習 JavaScript 作為一種獨立的語言,如...
摘要:定義一個組件可以在其他組件中調用這個組件調用組件劉宇組件插入內容在上面的案例中可以看到吧寫到當中,這種寫法稱為。 React初識 React是Facebook推出的一個javascript庫(用來創建用戶界面的Javascript庫),所以他只是和用戶的界面打交道,你可以把它看成MVC中的V(視圖)這一層。 組件 React的一切都是基于組件的。web世界的構成是基于各種HTML標簽的...
摘要:一般來說,聲明式編程關注于發生了啥,而命令式則同時關注與咋發生的。聲明式編程可以較好地解決這個問題,剛才提到的比較麻煩的元素選擇這個動作可以交托給框架或者庫區處理,這樣就能讓開發者專注于發生了啥,這里推薦一波與。 本文翻譯自FreeCodeCamp的from-zero-to-front-end-hero-part。 繼續譯者的廢話,這篇文章是前端攻略-從路人甲到英雄無敵的下半部分,在...
摘要:有級級級共個級別。事件類型事件類型鼠標事件鍵盤事件事件事件處理器執行代碼的程序在事件發生時會對事件做出響應。在標簽中使用事件處理器的語法是標簽事件處理器代碼事件處理程序事件就是用戶或瀏覽器自身執行的某種動作。 DOM介紹 D(文檔)可以理解為整個Web加載的網頁文檔,O(對象)可以理解為類似window對象只來的東西,可以調用屬性和方法,這里我們說的是document對象,M(模型)可...
摘要:事件處理允許對事件做出反應。還可以用代碼為多個元素分配相同的事件。指定事件監聽器接下來看看怎樣為元素分配事件監聽器。 翻譯:瘋狂惡的技術宅https://medium.freecodecamp.o... 本文首發微信公眾號:jingchengyideng歡迎關注,每天都給你推送新鮮的前端技術文章 Javascript DOM(文檔對象模型)是一個允許開發人員操縱頁面內容、結構和風...
閱讀 2790·2023-04-26 01:47
閱讀 3599·2023-04-25 23:45
閱讀 2476·2021-10-13 09:39
閱讀 614·2021-10-09 09:44
閱讀 1803·2021-09-22 15:59
閱讀 2780·2021-09-13 10:33
閱讀 1729·2021-09-03 10:30
閱讀 665·2019-08-30 15:53