成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript DOM

Nekron / 2842人閱讀

摘要:但上述兩個情況中都是同一份文檔。提示對象是對象的一部分,可通過屬性對其進(jìn)行訪問。返回包含指定節(jié)點(diǎn)的子節(jié)點(diǎn)的集合,該集合為即時更新的集合。對象在中,對象表示元素屬性節(jié)點(diǎn)的無序集合。

DOM簡介( Document Object Model 文檔對象模型) W3C

W3C 文檔對象模型 (DOM) 是中立于平臺和語言的接口,它允許程序和腳本動態(tài)地訪問和更新文檔的內(nèi)容、結(jié)構(gòu)和樣式。
W3C DOM 標(biāo)準(zhǔn)被分為 3 個不同的部分:

核心 DOM - 針對任何結(jié)構(gòu)化文檔的標(biāo)準(zhǔn)模型

XML DOM - 針對 XML 文檔的標(biāo)準(zhǔn)模型

HTML DOM - 針對 HTML 文檔的標(biāo)準(zhǔn)模型

也就是說,DOM包含三個版本(?),對應(yīng)不同的DOM模型,由于我對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)對象模型

HTML 的標(biāo)準(zhǔn)編程接口

W3C 標(biāo)準(zhǔn)

HTML DOM 定義了所有 HTML 元素的對象和屬性,以及訪問它們的方法。
換言之,HTML DOM 是關(guān)于如何獲取、修改、添加或刪除 HTML 元素的標(biāo)準(zhǔn)

引自MDN:

文檔對象模型 (DOM) 是HTMLXML文檔的編程接口。它提供了對文檔的結(jié)構(gòu)化的表述,并定義了一種方式可以使從程序中對該結(jié)構(gòu)進(jìn)行訪問,從而改變文檔的結(jié)構(gòu),樣式和內(nèi)容。DOM 將文檔解析為一個由節(jié)點(diǎn)和對象(包含屬性和方法的對象)組成的結(jié)構(gòu)集合。簡言之,它會將web頁面和腳本或程序語言連接起來。

一個web頁面是一個文檔。這個文檔可以在瀏覽器窗口或作為HTML源碼顯示出來。但上述兩個情況中都是同一份文檔。文檔對象模型(DOM)提供了對同一份文檔的另一種表現(xiàn),存儲和操作的方式。 DOM是web頁面的完全的面向?qū)ο蟊硎觯軌蚴褂萌?JavaScript等腳本語言進(jìn)行修改。

我們之所以能夠?qū)eb頁面進(jìn)行添加、刪除、更新、操控元素等等活動,就是因為這個DOM才得以實現(xiàn)。它定義了一套對象(方法)規(guī)則,使得JavaScript可以根據(jù)這些規(guī)則來進(jìn)行編程。更像是一個文檔API

DOM 節(jié)點(diǎn)(Node

根據(jù) W3C 的 HTML DOM 標(biāo)準(zhǔn),HTML 文檔中的所有內(nèi)容都是節(jié)點(diǎn):

整個文檔是一個文檔節(jié)點(diǎn)

每個HTML元素是元素節(jié)點(diǎn)

HTML元素內(nèi)的文本是文本節(jié)點(diǎn)

每個HTML屬性是屬性節(jié)點(diǎn)

注釋是注釋節(jié)點(diǎn)

節(jié)點(diǎn)樹

HTML DOM 將 HTML 文檔視作樹結(jié)構(gòu)。這種結(jié)構(gòu)被稱為節(jié)點(diǎn)樹:




    
        
        
         
    
        

Temperature Conversion

這也被稱為W3C DOM 1級核心
W3C的DOM Level 1 Core是用于更改文檔內(nèi)容樹的強(qiáng)大對象模型。所有主流瀏覽器都支持Mozilla Firefox和Microsoft Internet Explorer。它是網(wǎng)絡(luò)上腳本編寫的強(qiáng)大基礎(chǔ)。
怎么稱呼這些元素?

例:


  
    DOM 教程
  
  
    

DOM 第一課

Hello world!

節(jié)點(diǎn)沒有父節(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)擁有兩個子節(jié)點(diǎn):

節(jié)點(diǎn)擁有一個子節(jié)點(diǎn):</b> 節(jié)點(diǎn)</p></p> <p><p><b><title></b> 節(jié)點(diǎn)也擁有一個子節(jié)點(diǎn):<strong>文本節(jié)點(diǎn) "DOM 教程"</strong></p></p> <p><p><strong><b><h1></b> 和 <b><p></b> 節(jié)點(diǎn)是同胞節(jié)點(diǎn)</strong>,同時也是 <b><body></b> 的子節(jié)點(diǎn)</p></p> <p>并且</p> <p><p><b><head></b> 元素是 <b><html></b> 元素的首個子節(jié)點(diǎn)</p></p> <p><p><b><body></b> 元素是 <b><html></b> 元素的最后一個子節(jié)點(diǎn)</p></p> <p><p><b><h1></b> 元素是 <b><body></b> 元素的首個子節(jié)點(diǎn)</p></p> <p><p><b><p></b> 元素是 <b><body></b> 元素的最后一個子節(jié)點(diǎn)</p></p> <b>DOM 處理中的常見錯誤是希望元素節(jié)點(diǎn)包含文本。</b> <pre><p>在本例中:<b><title>DOM 教程,元素節(jié)點(diǎn) </b>,包含值為 "DOM 教程" 的<strong>文本節(jié)點(diǎn)</strong>。</p></pre> <b><b>HTML DOM</b></b> <b>首先記住這個:</b> <pre> <b><strong>在 <b>HTML DOM</b> (文檔對象模型)中,每個部分都是節(jié)點(diǎn):</strong></b> <p><b>文檔本身是文檔節(jié)點(diǎn)</b></p> <p><b>所有<b>HTML</b>元素是元素節(jié)點(diǎn)</b></p> <p><b>所有 <b>HTML</b> 屬性是屬性節(jié)點(diǎn)</b></p> <p><b> <b>HTML</b>元素內(nèi)的文本是文本節(jié)點(diǎn)</b></p> <p><b>注釋是注釋節(jié)點(diǎn)</b></p> </pre> <b><b>DOM Document</b></b> <pre> <b>每個載入瀏覽器的 <b>HTML</b> 文檔都會成為 <b>Document</b> 對象。</b> <b> <b>Document</b>對象使我們可以從腳本中對 <b>HTML</b> 頁面中的所有元素進(jìn)行訪問。</b> <b><strong>提示:<b>Document</b> 對象是 <b>Window</b> 對象的一部分,可通過 <b>window.document</b> 屬性對其進(jìn)行訪問。</strong></b> </pre> <b><b>document.URL</b></b> <p><p>URL 屬性可返回當(dāng)前文檔的 URL。<br>比如在現(xiàn)在的窗口下,控制臺輸入:</p></p> <pre>alert(document.URL) </pre> <p><script type="text/javascript">showImg("https://segmentfault.com/img/bVNXh4?w=609&h=152");</script></p> <b><b>document.getElementById()</b></b> <p>這個大家都很熟悉了,<b>getElementById()</b> 方法可返回對擁有指定 ID 的第一個對象的引用。</p> <pre><p>W3C還定義了一個工具函數(shù):<b>getElementById()</b> 是一個重要的方法,在 <b>DOM</b> 程序設(shè)計中,它的使用非常常見。我們?yōu)槟x了一個工具函數(shù),這樣您就可以通過一個較短的名字來使用 <b>getElementById()</b> 方法了:</p></pre> <pre> function id(x) { if (typeof x == "string") return document.getElementById(x); return x; } // 上面這個函數(shù)接受元素 ID 作為它們的參數(shù)。使用前編寫 x = id(x) 就可以了。</pre> <b><b>document.getElementsByName()</b></b> <p><b>getElementsByName()</b> 方法可返回帶有指定名稱的<strong>對象的集合</strong>。</p> <pre><p>該方法與 <b>getElementById()</b> 方法相似,但是它查詢元素的 <b>name</b> 屬性,而不是 id 屬性。<br>另外,因為一個文檔中的 <b>name</b> 屬性可能不唯一(如 <b>HTML</b> 表單中的單選按鈕通常具有相同的 <b>name</b> 屬性),<strong>所有 <b>getElementsByName()</b> 方法返回的是元素的數(shù)組,而不是一個元素。</strong></p></pre> <p>由于這個方法返回的是一個數(shù)組,不是具體的元素,所以必須注意這點(diǎn):</p> <pre> <input type="text" value="" name="myinput"/> <input type="button" value="" name="myinput" id="ID"/> <script type="text/javascript"> var inputA = document.getElementsByName("myinput")[0]; // [0]表示獲得的所有input元素中第一個 var inputB = document.getElementById("ID"); // ID取值則很精確,因為ID的特殊性 var iA = inputA.attributes; // 元素自帶對象,內(nèi)含該元素所有屬性(以鍵值對存在) alert(iA.length); // 3 alert(iA[0].name+" : "+iA[0].value); // "type : text" var iB = inputB.attributes; alert(iB.length); // 4 alert(iB[0].name+" : "+iB[0].value); // "type : button" </script> </pre> <b><b>document.getElementsByTagName()</b></b> <p>注意要和上面的區(qū)分,<b>TagName</b>指的是標(biāo)簽名</p> <pre> <b> <b>getElementsByTagName()</b> 方法可返回帶有指定標(biāo)簽名的<strong>對象的集合</strong>,<strong>返回元素的順序是它們在文檔中的順序。</strong> </b> <b>如果把特殊字符串 <b>"*"</b> 傳遞給 <b>getElementsByTagName()</b> 方法,<strong>它將返回文檔中所有元素的列表,元素排列的順序就是它們在文檔中的順序。</strong> </b> <p><strong>注釋:傳遞給 <b>getElementsByTagName()</b> 方法的字符串可以不區(qū)分大小寫。</strong></p> </pre> <pre> <input type="text" /> <input type="text" /> <input type="text" /> <script type="text/javascript"> var x = document.getElementsByTagName("INPUT")[0]; alert(x.tagName) // "INPUT" </script> </pre> <b><b>document.write()</b></b> <pre><p><strong><b>write()</b> 方法可向文檔寫入 HTML 表達(dá)式或 JavaScript 代碼。</strong><br>可列出多個參數(shù)<b>(exp1,exp2,exp3,...)</b> ,它們將按順序被追加到文檔中。</p></pre> <pre>document.write("Hello World!"); </pre> <b>關(guān)于Document的更多屬性方法可查W3C:HTML DOM Document 對象 </b> <b><b>DOM Element</b></b> <b>簡介:</b> <pre> <p><p><strong>在 HTML DOM 中,Element 對象表示 HTML 元素(所有 HTML 元素是元素節(jié)點(diǎn))。</strong></p></p> <p><p>Element 對象可以擁有類型為元素節(jié)點(diǎn)、文本節(jié)點(diǎn)、注釋節(jié)點(diǎn)的子節(jié)點(diǎn)。</p></p> <p><p><b>NodeList</b> 對象表示節(jié)點(diǎn)列表,比如 HTML 元素的子節(jié)點(diǎn)集合。</p></p> <p><p>元素也可以擁有屬性。屬性是屬性節(jié)點(diǎn)(參見<b>DOM Attribute</b>)。</p></p> </pre> <b><b>element.parentNode</b></b> <pre><p><b>parentNode</b> 屬性以 Node 對象的形式返回指定節(jié)點(diǎn)的父節(jié)點(diǎn)。<br>如果指定節(jié)點(diǎn)沒有父節(jié)點(diǎn),則返回 <b>null</b>。</p></pre> <pre> <div> <h1>H1</h1> </div> <script type="text/javascript"> var h = document.getElementsByTagName("H1")[0]; alert(h.parentNode.nodeName); // "DIV" </script> </pre> <b><b>element.style</b></b> <pre><p><b>HTMLElement.style</b> 屬性返回一個 CSSStyleDeclaration 對象,表示元素的 內(nèi)聯(lián)style 屬性(attribute),但忽略任何樣式表應(yīng)用的屬性。 通過 style 可以訪問的 CSS 屬性列表,可以查看 CSS Properties Reference。</p></pre> <pre> <div> <h1>H1</h1> </div> <script type="text/javascript"> var h = document.getElementsByTagName("H1")[0]; h.setAttribute("style","font-size:100px;color: blue;") </script></pre> <p><script type="text/javascript">showImg("https://segmentfault.com/img/bVNXNM?w=865&h=193");</script></p> <pre> <b> <b>elt.style.cssText = "color: blue";</b> 設(shè)置多個樣式屬性</b> <b> <b>elt.setAttribute("style", "color: blue");</b> 設(shè)置多個樣式屬性</b> <b> <b>elt.style.color = "blue";</b> 直接設(shè)置樣式屬性</b> <b> <b>var st = elt.style; st.color = "blue";</b> 間接設(shè)置樣式屬性</b> <p>通常,要了解元素樣式的信息,僅僅使用 style 屬性是不夠的,這是因為它只包含了在元素內(nèi)嵌 style 屬性(attribute)上聲明的的 CSS 屬性,而不包括來自其他地方聲明的樣式,如 <head> 部分的內(nèi)嵌樣式表,或外部樣式表。要獲取一個元素的所有 CSS 屬性,你應(yīng)該使用 window.getComputedStyle()。</p> </pre> <b><b>element.childNodes;</b></b> <pre><p><b>childNodes</b> 屬性返回節(jié)點(diǎn)的子節(jié)點(diǎn)集合,以 <b>NodeList</b> 對象。</p></pre> <p>提示:您可以使用 <b>length</b> 屬性來確定子節(jié)點(diǎn)的數(shù)量,然后您就能夠遍歷所有的子節(jié)點(diǎn)并提取您需要的信息。</p> <pre><p><b>Node.childNodes</b> 返回包含指定節(jié)點(diǎn)的子節(jié)點(diǎn)的集合,該集合為即時更新的集合(live collection)。</p></pre> <p><b>獲得的<b>Nodelist</b>是實時更新的,如果你新增一個子節(jié)點(diǎn),下次調(diào)用<b>chilNodes</b>屬性返回的<b>Nodelist</b>會變化(更新)。</b></p> <p><b> <b>Nodelist</b>不是數(shù)組!這一點(diǎn)很重要</b></p> <pre><!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <title>

this is div

this is H1

this is H2

這是DIV2的文本節(jié)點(diǎn)

Element P


MDN:Node.childNodes、NodeList 深入理解 NodeList - 挨踢前端 - 博客園 由于這個特性,所以一般推薦使用.childrenjQuery 遍歷 - children() 方法 DOM Attribute Attr 對象

在 HTML DOM 中,Attr 對象表示 HTML 屬性。

HTML 屬性始終屬于 HTML 元素。

NamedNodeMap 對象

在 HTML DOM 中,NamedNodeMap 對象表示元素屬性節(jié)點(diǎn)的無序集合

NamedNodeMap 中的節(jié)點(diǎn)可通過名稱或索引(數(shù)字)來訪問

            
            

這段代碼首先獲得inputHTML元素,然后調(diào)用attributes返回NameNodeMap屬性節(jié)點(diǎn)集合,里面的屬性以鍵值對方式存在,之后調(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 對象,其中提到了不要在屬性節(jié)點(diǎn)上使用節(jié)點(diǎn)對象的屬性和方法 常用方法:HTML DOM 關(guān)于事件一章我會另開一篇博文繼續(xù)研究

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/83061.html

相關(guān)文章

  • JavaScript簡介

    摘要:發(fā)布后不久,微軟就在其中加入了名為的實現(xiàn)命名為是為了避開與有關(guān)的授權(quán)問題。以現(xiàn)在的眼光來看,微軟年月為進(jìn)入瀏覽器領(lǐng)域而實施的這個重大舉措,是導(dǎo)致日后蒙羞的一個標(biāo)志性時間。微軟推出其實現(xiàn)意味著有了兩個不同的版本中的中的。 JavaScript簡介 前言:最近在細(xì)讀Javascript高級程序設(shè)計,對于我而言,中文版,書中很多地方一筆帶過,所以用自己所理解的,嘗試細(xì)致解讀下。如有紕漏或錯...

    teren 評論0 收藏0
  • JavaScript 簡介

    摘要:簡介原文鏈接簡稱是一種輕量級,解釋型的編程語言,其函數(shù)是一等公民。標(biāo)準(zhǔn)的目標(biāo)是讓任何一種程序設(shè)計語言能操控使用任何一種標(biāo)記語言編寫出的任何一份文檔。核心規(guī)定了如何映射基于的文檔結(jié)構(gòu),以便簡化對文檔的任意部分的訪問和操作。 JavaScript 簡介 原文鏈接 JavaScript ( 簡稱:JS ) 是一種 輕量級,解釋型 的編程語言,其函數(shù)是一等公民。眾所周知,它是用于網(wǎng)頁開發(fā)的腳...

    URLOS 評論0 收藏0
  • Javascript簡介

    摘要:以下內(nèi)容都是一些概念性的知識點(diǎn)弄懂這些基本的概念是我們在世界看得更遠(yuǎn)的墊腳石誕生于年年公司開發(fā)發(fā)布時臨時將名字改為當(dāng)時它的主要目的是處理以前由服務(wù)端語言負(fù)責(zé)的輸入驗證操作隨著其發(fā)展現(xiàn)在已不再局限于數(shù)據(jù)驗證而是具備了與瀏覽器窗口及其內(nèi)容等幾乎 以下內(nèi)容都是一些概念性的知識點(diǎn),弄懂這些基本的概念是我們在JavaScript世界看得更遠(yuǎn)的墊腳石. Javascript Javascript誕...

    Near_Li 評論0 收藏0
  • JavaScript 闖關(guān)記》之簡介

    摘要:瀏覽器只是實現(xiàn)的宿主環(huán)境之一,其他宿主環(huán)境包括和。年月,版發(fā)布,成為國際標(biāo)準(zhǔn)。事件定義了事件和事件處理的接口。對于已經(jīng)正式納入標(biāo)準(zhǔn)的來說,盡管各瀏覽器都實現(xiàn)了某些眾所周知的共同特性,但其他特性還是會因瀏覽器而異。 JavaScript 是面向 Web 的編程語言,絕大多數(shù)現(xiàn)代網(wǎng)站都使用了 JavaScript,并且所有的現(xiàn)代 Web 瀏覽器(電腦,手機(jī),平板)均包含了 JavaScri...

    baihe 評論0 收藏0
  • 簡單聊聊DOM

    摘要:討論在如何去使用元素用于在頁面中嵌入或引入腳本代碼,該元素默認(rèn)被定義在元素中頁面內(nèi)容該屬性定義規(guī)定的文本類型,可以為類型也可以為類型等其他類型和屬性類似,這個屬性定義腳本使用的語言,該屬性不是標(biāo)準(zhǔn)規(guī)范定義引用外部腳本的內(nèi)嵌代碼與內(nèi) 討論在HTML如何去使用JavaScript 元素用于在HTML頁面中嵌入或引入JavaScript腳本代碼,該元素默認(rèn)被定義在元素中 HTML頁面內(nèi)容: ...

    MASAILA 評論0 收藏0
  • JavaScript的組成 | DOM/BOM

    摘要:中主要關(guān)注的就是,對象的主要功能就是處理網(wǎng)頁內(nèi)容。中文翻譯模型,如果你把這個詞從中抽離出來,看下面的圖片是不是就很好理解。年月制定的標(biāo)準(zhǔn),由兩大部分組成核心和。擴(kuò)展鼠標(biāo)和用戶界面事件范圍遍歷,增加了對支持。 往期回顧 在上一期的《JavaScript的組成 | 核心-ECMAScript 》?里,我們有說到JavaScript 是由三大部分組成,分別是:核心ECMAScript、文檔對...

    worldligang 評論0 收藏0

發(fā)表評論

0條評論

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