區別:DOM Core 與 HTML-DOM
區別:DOM Core 與 HTML-DOM
今天在看JS DOM程式設計藝術的時候看到 DOM Core 和 HTML-DOM這2個名詞,遂上網查詢了下,幫助記錄和理解;
DOM(文件物件模型)是由W3C制定的一套訪問和操作XML(eXtensible Markup Language)文件的標準,即API。比如DOM告訴JavaScript引擎如何在瀏覽器視窗中顯示和操作XML建立的標記(Tag)。
DOM與特定的平臺、瀏覽器、語言無關,很多種語言都實現了DOM,比如因為JavaScript和PHP都實現了DOM,所以 JavaScript中有getElementsByTagName()方法,PHP中也有 getElementsByTagName(),getElementsByTagName()方法是DOM規定的訪問XML文件的介面。
XML與HTML相似,但兩者是有區別。XML和HTML都來自於SGML,它們都含有標記,有著相似的語法,HTML和XML的最大區別在 於:HTML是一個定型的標記語言,用固定的標記來描述和顯示資料,比如
<h1>表示首行標題,有固定的尺寸;而XML沒有固定的標記,只能通過自定義的標記來描述資料的形式和結構,而不能顯示。HTML是將資料 和顯示混在一起,而XML則是將資料和顯示分開來。那為什麼能使用DOM訪問和操作HTML文件(即網頁)呢?Web語義化的一個發展方向是將HTML逐 漸演變為更有語義、能將資料內容與現實分離的XML,但HTML不可能立即演變為XML,目前推薦使用的是一個過渡產物——XHTML。HTML與 XHTML網頁形成的節點樹(統稱為HTML節點樹)在結構上與XML節點樹一樣,可以看做是一個符合DOM的XML文件,因此可以使用實現了DOM的程
序語言(如JavaScript、PHP等)來訪問和操作HTML文件,即訪問和操作那些節點。
由於HTML與XML的相似性及差異,JavaScript不僅實現了標準的DOM方法和屬性(即由W3C制定的),而且還實現了HTML特有的 DOM方法和屬性,前者稱為DOM Core,並不專屬於JavaScript,後者稱為HTML-DOM。不管是DOM Core還是HTML-DOM,我們在使用JavaScript的時候要注意瀏覽器之間的相容性,因為不同的瀏覽器對這兩類方法和屬性的支援可能不一樣。 這裡不詳談DOM Core和HTML-DOM,以及跨瀏覽器相容性,教材上都有詳細描述。但一般推薦使用DOM Core方法和屬性,儘管稍顯繁雜。
常見的Core DOM方法如下:
1、建立節點
createElement()
createTextNode()
2、複製節點
cloneNode()
3、插入節點
appendChild()
insertBefore()
4、刪除節點
removeChild()
5、替換節點
replaceChild()
6、查詢和設定節點屬性
setAttribute()
getAttribute()
7、查詢節點
getElementById()
getElementsByTagName()
hasChildNode()
常見的Core DOM屬性如下:
node.childNodes
node.firstChild
node.lastChild
node.nextSibling
node.previousSibling
node.parentNode
相關文章
- document、DOM、window、BOM區別
- 在JavaScript中,DOM物件與jQuery物件的區別與轉換JavaScript物件jQuery
- dom選擇方法的區別
- dom解析和sax解析的區別
- DOM和BOM有什麼區別?
- xpath和dom有什麼區別?
- DOM0、DOM2、DOM3事件處理方式的區別是什麼?事件
- React 的虛擬 DOM 和 Vue 的虛擬 DOM 有什麼區別?ReactVue
- DOM 精通了?請問 Node 和 Elment 有何區別?
- DOM 精通了?請問 Node 和 Element 有何區別?
- BOM與DOM之DOM操作
- ??與?:的區別
- .Net Core與跨平臺時區
- js與DOMJS
- 什麼是Asp.net Core?和 .net core有什麼區別?ASP.NET
- jquery中dom節點操作方法empty和remove的區別jQueryREM
- mouseenter與mouseover區別
- currentTarget與target區別
- mouseout與mouseleave區別
- classList與className區別
- innerText與textContent區別
- GET與POST區別
- let與const區別
- NIO與IO區別
- 區別mouseover與mouseenter?
- ApplicationContext 與 BeanFactory 區別APPContextBean
- setInterval()與setTimeout()區別
- match()與exec()區別
- localStorage與sessionStorage 區別Session
- showModal()與show() 區別
- <section>與<article> 區別
- onmouseover與onmouseenter區別
- offset與style區別
- cellpadding與cellspacing 區別padding
- animation與transition 區別
- encodeURI與encodeURIComponent區別
- JavaScript與ECMAScript 區別JavaScript
- FragmentPagerAdapter與FragmentStatePagerAdapter區別FragmentAPT
- put與putIfAbsent區別