摘要:但上述兩個(gè)情況中都是同一份文檔。提示對(duì)象是對(duì)象的一部分,可通過(guò)屬性對(duì)其進(jìn)行訪(fǎng)問(wèn)。返回包含指定節(jié)點(diǎn)的子節(jié)點(diǎn)的集合,該集合為即時(shí)更新的集合。對(duì)象在中,對(duì)象表示元素屬性節(jié)點(diǎn)的無(wú)序集合。
DOM簡(jiǎn)介( Document Object Model 文檔對(duì)象模型) W3C
W3C 文檔對(duì)象模型 (DOM) 是中立于平臺(tái)和語(yǔ)言的接口,它允許程序和腳本動(dòng)態(tài)地訪(fǎng)問(wèn)和更新文檔的內(nèi)容、結(jié)構(gòu)和樣式。
W3C DOM 標(biāo)準(zhǔn)被分為 3 個(gè)不同的部分:
核心 DOM - 針對(duì)任何結(jié)構(gòu)化文檔的標(biāo)準(zhǔn)模型
XML DOM - 針對(duì) XML 文檔的標(biāo)準(zhǔn)模型
HTML DOM - 針對(duì) HTML 文檔的標(biāo)準(zhǔn)模型
也就是說(shuō),DOM包含三個(gè)版本(?),對(duì)應(yīng)不同的DOM模型,由于我對(duì)XML還不是很了解,這里主要先討論HTML DOM
關(guān)于XML DOM 的W3C文檔:XML DOM 教程 MDN:DOM概述 XML與HTML的區(qū)別 XML DOM解析 基礎(chǔ)概念 什么是 HTML DOM?引自W3C:
HTML的標(biāo)準(zhǔn)對(duì)象模型
HTML 的標(biāo)準(zhǔn)編程接口
W3C 標(biāo)準(zhǔn)
HTML DOM 定義了所有 HTML 元素的對(duì)象和屬性,以及訪(fǎng)問(wèn)它們的方法。
換言之,HTML DOM 是關(guān)于如何獲取、修改、添加或刪除 HTML 元素的標(biāo)準(zhǔn)
引自MDN:
文檔對(duì)象模型 (DOM) 是HTML和XML文檔的編程接口。它提供了對(duì)文檔的結(jié)構(gòu)化的表述,并定義了一種方式可以使從程序中對(duì)該結(jié)構(gòu)進(jìn)行訪(fǎng)問(wèn),從而改變文檔的結(jié)構(gòu),樣式和內(nèi)容。DOM 將文檔解析為一個(gè)由節(jié)點(diǎn)和對(duì)象(包含屬性和方法的對(duì)象)組成的結(jié)構(gòu)集合。簡(jiǎn)言之,它會(huì)將web頁(yè)面和腳本或程序語(yǔ)言連接起來(lái)。
一個(gè)web頁(yè)面是一個(gè)文檔。這個(gè)文檔可以在瀏覽器窗口或作為HTML源碼顯示出來(lái)。但上述兩個(gè)情況中都是同一份文檔。文檔對(duì)象模型(DOM)提供了對(duì)同一份文檔的另一種表現(xiàn),存儲(chǔ)和操作的方式。 DOM是web頁(yè)面的完全的面向?qū)ο蟊硎觯軌蚴褂萌?JavaScript等腳本語(yǔ)言進(jìn)行修改。
我們之所以能夠?qū)eb頁(yè)面進(jìn)行添加、刪除、更新、操控元素等等活動(dòng),就是因?yàn)檫@個(gè)DOM才得以實(shí)現(xiàn)。它定義了一套對(duì)象(方法)規(guī)則,使得JavaScript可以根據(jù)這些規(guī)則來(lái)進(jìn)行編程。更像是一個(gè)文檔API
DOM 節(jié)點(diǎn)(Node)節(jié)點(diǎn)樹(shù)根據(jù) W3C 的 HTML DOM 標(biāo)準(zhǔn),HTML 文檔中的所有內(nèi)容都是節(jié)點(diǎn):
整個(gè)文檔是一個(gè)文檔節(jié)點(diǎn)
每個(gè)HTML元素是元素節(jié)點(diǎn)
HTML元素內(nèi)的文本是文本節(jié)點(diǎn)
每個(gè)HTML屬性是屬性節(jié)點(diǎn)
注釋是注釋節(jié)點(diǎn)
HTML DOM 將 HTML 文檔視作樹(shù)結(jié)構(gòu)。這種結(jié)構(gòu)被稱(chēng)為節(jié)點(diǎn)樹(shù):
這也被稱(chēng)為W3C DOM 1級(jí)核心Temperature Conversion
W3C的DOM Level 1 Core是用于更改文檔內(nèi)容樹(shù)的強(qiáng)大對(duì)象模型。所有主流瀏覽器都支持Mozilla Firefox和Microsoft Internet Explorer。它是網(wǎng)絡(luò)上腳本編寫(xiě)的強(qiáng)大基礎(chǔ)。怎么稱(chēng)呼這些元素?
例:
DOM 教程 DOM 第一課
Hello world!
節(jié)點(diǎn)沒(méi)有父節(jié)點(diǎn);它是根節(jié)點(diǎn)
和 的父節(jié)點(diǎn)是 節(jié)點(diǎn)
文本節(jié)點(diǎn) "Hello world!" 的父節(jié)點(diǎn)是
節(jié)點(diǎn)
且
節(jié)點(diǎn)擁有兩個(gè)子節(jié)點(diǎn): 和
節(jié)點(diǎn)擁有一個(gè)子節(jié)點(diǎn):
和 節(jié)點(diǎn)是同胞節(jié)點(diǎn)
并且
元素是 元素的首個(gè)子節(jié)點(diǎn)
元素是 元素的最后一個(gè)子節(jié)點(diǎn)
元素是 元素的首個(gè)子節(jié)點(diǎn)
元素是 元素的最后一個(gè)子節(jié)點(diǎn)
DOM 處理中的常見(jiàn)錯(cuò)誤是希望元素節(jié)點(diǎn)包含文本。HTML DOM 首先記住這個(gè):在本例中:
DOM 教程 ,元素節(jié)點(diǎn),包含值為 "DOM 教程" 的文本節(jié)點(diǎn)。
在 HTML DOM (文檔對(duì)象模型)中,每個(gè)部分都是節(jié)點(diǎn):DOM Document文檔本身是文檔節(jié)點(diǎn)
所有HTML元素是元素節(jié)點(diǎn)
所有 HTML 屬性是屬性節(jié)點(diǎn)
HTML元素內(nèi)的文本是文本節(jié)點(diǎn)
注釋是注釋節(jié)點(diǎn)
每個(gè)載入瀏覽器的 HTML 文檔都會(huì)成為 Document 對(duì)象。 Document對(duì)象使我們可以從腳本中對(duì) HTML 頁(yè)面中的所有元素進(jìn)行訪(fǎng)問(wèn)。 提示:Document 對(duì)象是 Window 對(duì)象的一部分,可通過(guò) window.document 屬性對(duì)其進(jìn)行訪(fǎng)問(wèn)。document.URL
URL 屬性可返回當(dāng)前文檔的 URL。
比如在現(xiàn)在的窗口下,控制臺(tái)輸入:
alert(document.URL)document.getElementById()
這個(gè)大家都很熟悉了,getElementById() 方法可返回對(duì)擁有指定 ID 的第一個(gè)對(duì)象的引用。
W3C還定義了一個(gè)工具函數(shù):getElementById() 是一個(gè)重要的方法,在 DOM 程序設(shè)計(jì)中,它的使用非常常見(jiàn)。我們?yōu)槟x了一個(gè)工具函數(shù),這樣您就可以通過(guò)一個(gè)較短的名字來(lái)使用 getElementById() 方法了:
function id(x) { if (typeof x == "string") return document.getElementById(x); return x; } // 上面這個(gè)函數(shù)接受元素 ID 作為它們的參數(shù)。使用前編寫(xiě) x = id(x) 就可以了。document.getElementsByName()
getElementsByName() 方法可返回帶有指定名稱(chēng)的對(duì)象的集合。
該方法與 getElementById() 方法相似,但是它查詢(xún)?cè)氐?name 屬性,而不是 id 屬性。
另外,因?yàn)橐粋€(gè)文檔中的 name 屬性可能不唯一(如 HTML 表單中的單選按鈕通常具有相同的 name 屬性),所有 getElementsByName() 方法返回的是元素的數(shù)組,而不是一個(gè)元素。
由于這個(gè)方法返回的是一個(gè)數(shù)組,不是具體的元素,所以必須注意這點(diǎn):
document.getElementsByTagName()
注意要和上面的區(qū)分,TagName指的是標(biāo)簽名
getElementsByTagName() 方法可返回帶有指定標(biāo)簽名的對(duì)象的集合,返回元素的順序是它們?cè)谖臋n中的順序。 如果把特殊字符串 "*" 傳遞給 getElementsByTagName() 方法,它將返回文檔中所有元素的列表,元素排列的順序就是它們?cè)谖臋n中的順序。注釋?zhuān)簜鬟f給 getElementsByTagName() 方法的字符串可以不區(qū)分大小寫(xiě)。
document.write()
write() 方法可向文檔寫(xiě)入 HTML 表達(dá)式或 JavaScript 代碼。
可列出多個(gè)參數(shù)(exp1,exp2,exp3,...) ,它們將按順序被追加到文檔中。
document.write("Hello World!");關(guān)于Document的更多屬性方法可查W3C:HTML DOM Document 對(duì)象 DOM Element 簡(jiǎn)介:
element.parentNode在 HTML DOM 中,Element 對(duì)象表示 HTML 元素(所有 HTML 元素是元素節(jié)點(diǎn))。
Element 對(duì)象可以擁有類(lèi)型為元素節(jié)點(diǎn)、文本節(jié)點(diǎn)、注釋節(jié)點(diǎn)的子節(jié)點(diǎn)。
NodeList 對(duì)象表示節(jié)點(diǎn)列表,比如 HTML 元素的子節(jié)點(diǎn)集合。
元素也可以擁有屬性。屬性是屬性節(jié)點(diǎn)(參見(jiàn)DOM Attribute)。
parentNode 屬性以 Node 對(duì)象的形式返回指定節(jié)點(diǎn)的父節(jié)點(diǎn)。
如果指定節(jié)點(diǎn)沒(méi)有父節(jié)點(diǎn),則返回 null。
element.styleH1
HTMLElement.style 屬性返回一個(gè) CSSStyleDeclaration 對(duì)象,表示元素的 內(nèi)聯(lián)style 屬性(attribute),但忽略任何樣式表應(yīng)用的屬性。 通過(guò) style 可以訪(fǎng)問(wèn)的 CSS 屬性列表,可以查看 CSS Properties Reference。
H1
elt.style.cssText = "color: blue"; 設(shè)置多個(gè)樣式屬性 elt.setAttribute("style", "color: blue"); 設(shè)置多個(gè)樣式屬性 elt.style.color = "blue"; 直接設(shè)置樣式屬性 var st = elt.style; st.color = "blue"; 間接設(shè)置樣式屬性element.childNodes;通常,要了解元素樣式的信息,僅僅使用 style 屬性是不夠的,這是因?yàn)樗话嗽谠貎?nèi)嵌 style 屬性(attribute)上聲明的的 CSS 屬性,而不包括來(lái)自其他地方聲明的樣式,如
部分的內(nèi)嵌樣式表,或外部樣式表。要獲取一個(gè)元素的所有 CSS 屬性,你應(yīng)該使用 window.getComputedStyle()。
childNodes 屬性返回節(jié)點(diǎn)的子節(jié)點(diǎn)集合,以 NodeList 對(duì)象。
提示:您可以使用 length 屬性來(lái)確定子節(jié)點(diǎn)的數(shù)量,然后您就能夠遍歷所有的子節(jié)點(diǎn)并提取您需要的信息。
Node.childNodes 返回包含指定節(jié)點(diǎn)的子節(jié)點(diǎn)的集合,該集合為即時(shí)更新的集合(live collection)。
獲得的Nodelist是實(shí)時(shí)更新的,如果你新增一個(gè)子節(jié)點(diǎn),下次調(diào)用chilNodes屬性返回的Nodelist會(huì)變化(更新)。
Nodelist不是數(shù)組!這一點(diǎn)很重要
MDN:Node.childNodes、NodeList 深入理解 NodeList - 挨踢前端 - 博客園 由于這個(gè)特性,所以一般推薦使用.childrenjQuery 遍歷 - children() 方法 DOM Attribute Attr 對(duì)象 this is divthis is H1
this is H2
這是DIV2的文本節(jié)點(diǎn)Element P
在 HTML DOM 中,Attr 對(duì)象表示 HTML 屬性。
HTML 屬性始終屬于 HTML 元素。
NamedNodeMap 對(duì)象在 HTML DOM 中,NamedNodeMap 對(duì)象表示元素屬性節(jié)點(diǎn)的無(wú)序集合。
NamedNodeMap 中的節(jié)點(diǎn)可通過(guò)名稱(chēng)或索引(數(shù)字)來(lái)訪(fǎng)問(wèn)。
這段代碼首先獲得inputHTML元素,然后調(diào)用attributes返回NameNodeMap屬性節(jié)點(diǎn)集合,里面的屬性以鍵值對(duì)方式存在,之后調(diào)用value屬性的屬性值。
attribute.setNamedItem()setNamedItem() 方法向 nodeMap 添加指定的節(jié)點(diǎn)。
如果此節(jié)點(diǎn)已存在,則將替換該節(jié)點(diǎn),并返回被替換的節(jié)點(diǎn),否則返回值是 null。
var i = document.getElementById("input"); var c = document.createAttribute("class"); c.nodeValue = "cla"; i.attributes.setNamedItem(c)
創(chuàng)建屬性節(jié)點(diǎn),設(shè)置節(jié)點(diǎn)值,添加到元素節(jié)點(diǎn)下,然后設(shè)置屬性節(jié)點(diǎn),這里用的是attributes方法,即namednodemap.removeNamedItem(nodename)
添加屬性節(jié)點(diǎn)也可以使用element.setAttributeNode(attributenode)方法;
關(guān)于更多:HTML DOM Attribute 對(duì)象,其中提到了不要在屬性節(jié)點(diǎn)上使用節(jié)點(diǎn)對(duì)象的屬性和方法 常用方法:HTML DOM 關(guān)于事件一章我會(huì)另開(kāi)一篇博文繼續(xù)研究文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/83061.html
摘要:發(fā)布后不久,微軟就在其中加入了名為的實(shí)現(xiàn)命名為是為了避開(kāi)與有關(guān)的授權(quán)問(wèn)題。以現(xiàn)在的眼光來(lái)看,微軟年月為進(jìn)入瀏覽器領(lǐng)域而實(shí)施的這個(gè)重大舉措,是導(dǎo)致日后蒙羞的一個(gè)標(biāo)志性時(shí)間。微軟推出其實(shí)現(xiàn)意味著有了兩個(gè)不同的版本中的中的。 JavaScript簡(jiǎn)介 前言:最近在細(xì)讀Javascript高級(jí)程序設(shè)計(jì),對(duì)于我而言,中文版,書(shū)中很多地方一筆帶過(guò),所以用自己所理解的,嘗試細(xì)致解讀下。如有紕漏或錯(cuò)...
摘要:簡(jiǎn)介原文鏈接簡(jiǎn)稱(chēng)是一種輕量級(jí),解釋型的編程語(yǔ)言,其函數(shù)是一等公民。標(biāo)準(zhǔn)的目標(biāo)是讓任何一種程序設(shè)計(jì)語(yǔ)言能操控使用任何一種標(biāo)記語(yǔ)言編寫(xiě)出的任何一份文檔。核心規(guī)定了如何映射基于的文檔結(jié)構(gòu),以便簡(jiǎn)化對(duì)文檔的任意部分的訪(fǎng)問(wèn)和操作。 JavaScript 簡(jiǎn)介 原文鏈接 JavaScript ( 簡(jiǎn)稱(chēng):JS ) 是一種 輕量級(jí),解釋型 的編程語(yǔ)言,其函數(shù)是一等公民。眾所周知,它是用于網(wǎng)頁(yè)開(kāi)發(fā)的腳...
摘要:以下內(nèi)容都是一些概念性的知識(shí)點(diǎn)弄懂這些基本的概念是我們?cè)谑澜缈吹酶h(yuǎn)的墊腳石誕生于年年公司開(kāi)發(fā)發(fā)布時(shí)臨時(shí)將名字改為當(dāng)時(shí)它的主要目的是處理以前由服務(wù)端語(yǔ)言負(fù)責(zé)的輸入驗(yàn)證操作隨著其發(fā)展現(xiàn)在已不再局限于數(shù)據(jù)驗(yàn)證而是具備了與瀏覽器窗口及其內(nèi)容等幾乎 以下內(nèi)容都是一些概念性的知識(shí)點(diǎn),弄懂這些基本的概念是我們?cè)贘avaScript世界看得更遠(yuǎn)的墊腳石. Javascript Javascript誕...
摘要:瀏覽器只是實(shí)現(xiàn)的宿主環(huán)境之一,其他宿主環(huán)境包括和。年月,版發(fā)布,成為國(guó)際標(biāo)準(zhǔn)。事件定義了事件和事件處理的接口。對(duì)于已經(jīng)正式納入標(biāo)準(zhǔn)的來(lái)說(shuō),盡管各瀏覽器都實(shí)現(xiàn)了某些眾所周知的共同特性,但其他特性還是會(huì)因?yàn)g覽器而異。 JavaScript 是面向 Web 的編程語(yǔ)言,絕大多數(shù)現(xiàn)代網(wǎng)站都使用了 JavaScript,并且所有的現(xiàn)代 Web 瀏覽器(電腦,手機(jī),平板)均包含了 JavaScri...
摘要:討論在如何去使用元素用于在頁(yè)面中嵌入或引入腳本代碼,該元素默認(rèn)被定義在元素中頁(yè)面內(nèi)容該屬性定義規(guī)定的文本類(lèi)型,可以為類(lèi)型也可以為類(lèi)型等其他類(lèi)型和屬性類(lèi)似,這個(gè)屬性定義腳本使用的語(yǔ)言,該屬性不是標(biāo)準(zhǔn)規(guī)范定義引用外部腳本的內(nèi)嵌代碼與內(nèi) 討論在HTML如何去使用JavaScript 元素用于在HTML頁(yè)面中嵌入或引入JavaScript腳本代碼,該元素默認(rèn)被定義在元素中 HTML頁(yè)面內(nèi)容: ...
摘要:中主要關(guān)注的就是,對(duì)象的主要功能就是處理網(wǎng)頁(yè)內(nèi)容。中文翻譯模型,如果你把這個(gè)詞從中抽離出來(lái),看下面的圖片是不是就很好理解。年月制定的標(biāo)準(zhǔn),由兩大部分組成核心和。擴(kuò)展鼠標(biāo)和用戶(hù)界面事件范圍遍歷,增加了對(duì)支持。 往期回顧 在上一期的《JavaScript的組成 | 核心-ECMAScript 》?里,我們有說(shuō)到JavaScript 是由三大部分組成,分別是:核心ECMAScript、文檔對(duì)...
閱讀 2123·2023-04-26 02:23
閱讀 1860·2021-09-03 10:30
閱讀 1427·2019-08-30 15:43
閱讀 1262·2019-08-29 16:29
閱讀 623·2019-08-29 12:28
閱讀 2398·2019-08-26 12:13
閱讀 2357·2019-08-26 12:01
閱讀 2487·2019-08-26 11:56