欧美三区四区_av先锋影音资源站_亚洲第一论坛sis_影音先锋2020色资源网_亚洲精品社区_在线免费观看av网站_国产一区二区伦理_亚洲欧美视频一区二区_99视频精品全部免费在线_精精国产xxxx视频在线

如何利用 DOM 進行 Web 響應_Xml教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:解析xslt的簡單使用[xml-->html]
XSLT命令[xml格式轉換] 1.循環(huán) xsl:for-each... xsl:for-each select=BookList/Item tr th align=left xsl:value-of select=.//title //th tdxsl:value-of select=.//categroy //td tdxsl:value-of select=.//release-date //td tdxsl:value-of se

程序員(使用后端應用程序)和 Web 程序員(編寫 HTML、CSS 和 JavaScript)之間的分水嶺是長久存在的。但是,Document Object Model (DOM) 彌補了這個裂縫,使得在后端使用 XML 同時在前端使用 HTML 切實可行,并成為極其有效的工具。在本文中,Brett McLaughlin 介紹了 Document Object Model,解釋它在 Web 頁面中的應用,并開始挖掘其在 JavaScript 中的用途。

與許多 Web 程序員一樣,您可能使用過 HTML。HTML 是程序員開始與 Web 頁面打交道的方式;HTML 通常是他們完成應用程序或站點前的最后一步——調整一些布局、顏色或樣式。不過,雖然經(jīng)常使用 HTML,但對于 HTML 轉到瀏覽器呈現(xiàn)在屏幕上時到底發(fā)生了什么,人們普遍存在誤解。在我分析您認為可能發(fā)生的事情及其可能錯誤的原因之前,我希望您對設計和服務 Web 頁面時涉及的過程一清二楚:

1、一些人(通常是您!)在文本編輯器或 IDE 中創(chuàng)建 HTML。
2、然后您將 HTML 上載到 Web 服務器,例如 Apache HTTPD,并將其公開在 Internet 或 intranet 上。
3、用戶用 Firefox 或 SafariA 等瀏覽器請求您的 Web 頁面。
4、用戶的瀏覽器向您的服務器請求 HTML。
5、瀏覽器將從服務器接收到的頁面以圖形和文本方式呈現(xiàn);用戶看到并激活 Web 頁面。

這看起來非常基礎,但事情很快會變得有趣起來。事實上,步驟 4 和步驟 5 之間發(fā)生的巨大數(shù)量的 “填充物(stuff)” 就是本文的焦點。術語 “填充物” 也十分適用,因為多數(shù)程序員從來沒有真正考慮過當用戶瀏覽器請求顯示標記時到底在標記身上發(fā)生了什么。

·是否瀏覽器只是讀取 HTML 中的文本并將其顯示?
·CSS 呢?尤其是當 CSS 位于外部文件時。
·JavaScript 呢?它也通常位于外部文件中。
·瀏覽器如何處理這些項,如果將事件處理程序、函數(shù)和樣式映射到該文本標記?

實踐證明,所有這些問題的答案都是 Document Object Model。因此,廢話少說,直接研究 DOM。

Web 程序員和標記

對于多數(shù)程序員,當 Web 瀏覽器開始時他們的工作就結束了。也就是說,將一個 HTML 文件放入 Web 瀏覽器的目錄上后,您通常就認為它已經(jīng)“完成”,而且(滿懷希望地)認為再也不會考慮它!說到編寫干凈、組織良好的頁面時,這也是一個偉大的目標;希望您的標記跨瀏覽器、用各種版本的 CSS 和 JavaScript 顯示它應該顯示的內容,一點錯都沒有。

問題是這種方法限制了程序員對瀏覽器中真正發(fā)生的事情的理解。更重要的是,它限制了您用客戶端 JavaScript 動態(tài)更新、更改和重構 Web 頁面的能力。擺脫這種限制,讓您的 Web 站點擁有更大的交互性和創(chuàng)造性。

程序員做什么

作為典型的 Web 程序員,您可能啟動文本編輯和 IDE 后就開始輸入 HTML、CSS 甚至 JavaScript。很容易認為這些標記、選擇器和屬性只是使站點正確顯示而做的小小的任務。但是,在這一點上您需要拓展您的思路,要意識到您是在組織您的內容。不要擔心;我保證這不會變成關于標記美觀、您必須如何認識到 Web 頁面的真正潛力或其他任何元物質的講座。您需要了解的是您在 Web 開發(fā)中到底是什么角色。

說到頁面的外觀,頂多您只能提提建議。您提供 CSS 樣式表時,用戶可以覆蓋您的樣式選擇。您提供字體大小時,用戶瀏覽器可以為視障者更改這些大小,或者在大顯示器(具有同等大的分辨率)上按比例縮小。甚至您選擇的顏色和字體也受制于用戶顯示器和用戶在其系統(tǒng)上安裝的字體。雖然盡您所能來設計頁面樣式很不錯,但這絕不是 您對 Web 頁面的最大影響。

您絕對控制的是 Web 頁面的結構。您的標記不可更改,用戶就不能亂弄;他們的瀏覽器只能從您的 Web 服務器檢索標記并顯示它(雖然樣式更符合用戶的品味而不是您自己的品味)。但頁面組織,不管是在該段落內還是在其他分區(qū),都只由您單獨決定。要是想實際更改您的頁面(這是大多數(shù) Ajax 應用程序所關注的),您操作的是頁面的結構。盡管很容易更改一段文本的顏色,但在現(xiàn)有頁面上添加文本或整個區(qū)段要難得多。不管用戶如何設計該區(qū)段的樣式,都是由您控制頁面本身的組織。

標記做什么

一旦意識到您的標記是真正與組織相關的,您就會對它另眼相看了。不會認為 h1 導致文本是大字號、黑色、粗體的,而會認為 h1 是標題。用戶如何看待這個問題以及他們是使用您的 CSS、他們自己的 CSS 還是這兩者的組合,這是次要的考慮事項。相反,要意識到只有標記才能提供這種級別的組織;p 指明文本在段落內,img 表示圖像,div 將頁面分成區(qū)段,等等。

還應該清楚,樣式和行為(事件處理程序和 JavaScript)是在事后 應用于該組織的。標記就緒以后才能對其進行操作或設計樣式。所以,正如您可以將 CSS 保存在 HTML 的外部文件中一樣,標記的組織與其樣式、格式和行為是分離的。雖然您肯定可以用 JavaScript 更改元素或文本的樣式,但實際更改您的標記所布置的組織卻更加有趣。

只要牢記您的標記只為您的頁面提供組織、框架,您就能立于不敗之地。再前進一小步,您就會明白瀏覽器是如何接受所有的文本組織并將其轉變?yōu)槌売腥さ囊恍〇|西的,即一組對象,其中每個對象都可被更改、添加或刪除。

文本標記的優(yōu)點

在討論 Web 瀏覽器之前,值得考慮一下為什么純文本絕對 是存儲 HTML 的最佳選擇(有關詳細信息,請參閱 有關標記的一些其他想法)。不考慮優(yōu)缺點,只是回憶一下在每次查看頁面時 HTML 是通過網(wǎng)絡發(fā)送到 Web 瀏覽器的(為了簡潔,不考慮高速緩存等)。真是再沒有比傳遞文本再有效的方法了。二進制對象、頁面圖形表示、重新組織的標記塊等等,所有這一切都比純文本文件通過網(wǎng)絡傳遞要更困難。

此外,瀏覽器也為此增光添彩。今天的瀏覽器允許用戶更改文本大小、按比例伸縮圖像、下載頁面的 CSS 或 JavaScript(大多數(shù)情況),甚至更多,這完全排除了將任何類型的頁面圖形表示發(fā)送到瀏覽器上。但是,瀏覽器需要原 HTML,這樣它才能在瀏覽器中對頁面應用任何處理,而不是信任瀏覽器去處理該任務。同樣地,將 CSS 從 JavaScript 分離和將 CSS 從 HTML 標記分離要求一種容易分離的格式。文本文件又一次成為該任務的最好方法。

最后但同樣重要的一點是,記住,新標準(比如 HTML 4.01 與 XHTML 1.0 和 1.1)承諾將內容(頁面中的數(shù)據(jù))與表示和樣式(通常由 CSS 應用)分離。如果程序員要將 HTML 與 CSS 分離,然后強制瀏覽器檢索粘結頁面各部分的一些頁面表示,這會失去這些標準的多數(shù)優(yōu)點。保持這些部分到達瀏覽器時都一直分離使得瀏覽器在從服務器獲取 HTML 時有了前所未有的靈活性。

關于標記的其他想法

純文本編輯:是對是錯?
純文本是存儲標記的理想選擇,但是不適合編輯 標記。大行其道的是使用 IDE,比如 Macromedia DreamWeaver 或更強勢點的 Microsoft® FrontPage®,來操作 Web 頁面標記。這些環(huán)境通常提供快捷方式和幫助來創(chuàng)建 Web 頁面,尤其是在使用 CSS 和 JavaScript 時,二者都來自實際頁面標記以外的文件。許多人仍偏愛好用古老的記事本或 vi(我承認我也是其中一員),這并不要緊。不管怎樣,最終結果都是充滿標記的文本文件。

網(wǎng)絡上的文本:好東西

已經(jīng)說過,文本是文檔的最好媒體,比如 HTML 或 CSS,在網(wǎng)絡上被千百次地傳輸。當我說瀏覽器表示文本很難時,是特指將文本轉換為用戶查看的可視圖形頁面。這與瀏覽器實際上如何從 Web 瀏覽器檢索頁面沒有關系;在這種情況下,文本仍然是最佳選擇。

文本標記的缺點

正如文本標記對于設計人員和頁面創(chuàng)建者具有驚人的優(yōu)點之外,它對于瀏覽器也具有相當出奇的缺點。具體來說,瀏覽器很難直接將文本標記可視地表示給用戶(詳細信息請參閱 有關標記的一些其他想法)。考慮下列常見的瀏覽器任務:

·基于元素類型、類、ID 及其在 HTML 文檔中的位置,將 CSS 樣式(通常來自外部文件中的多個樣式表)應用于標記。
·基于 JavaScript 代碼(通常位于外部文件)將樣式和格式應用于 HTML 文檔的不同部分。
·基于 JavaScript 代碼更改表單字段的值。
·基于 JavaScript 代碼,支持可視效果,比如圖像翻轉和圖像交換。

復雜性并不在于編碼這些任務;其中每件事都是相當容易的。復雜性來自實際實現(xiàn)請求動作的瀏覽器。如果標記存儲為文本,比如,想要在 center-text 類的 p 元素中輸入文本 (text-align: center),如何實現(xiàn)呢?

·將內聯(lián)樣式添加到文本嗎?
·將樣式應用到瀏覽器中的 HTML 文本,并只保持內容居中或不居中?
·應用無樣式的 HTML,然后事后應用格式?

這些非常困難的問題是如今很少有人編寫瀏覽器的原因。(編寫瀏覽器的人應該接受最由衷的感謝)

無疑,純文本不是存儲瀏覽器 HTML 的好辦法,盡管文本是獲取頁面標記最好的解決方案。如果加上 JavaScript 更改 頁面結構的能力,事情就變得有些微妙了。瀏覽器應該將修改過的結構重新寫入磁盤嗎?如何才能保持文檔的最新版本呢?

無疑,文本不是答案。它難以修改,為其應用樣式和行為很困難,與今天 Web 頁面的動態(tài)本質在根本上相去甚遠。

求助于樹視圖

這個問題的答案(至少是由當今 Web 瀏覽器選擇的答案)是使用樹結構來表示 HTML。參見 清單 1,這是一個表示為本文標記的相當簡單又無聊的 HTML 頁面。

清單 1. 文本標記中的簡單 HTML 頁面

<html>
<head>
<title>Trees, trees, everywhere</title>
</head>
<body>
<h1>Trees, trees, everywhere</h1>
<p>Welcome to a <em>really</em> boring page.</p>
<div>
Come again soon.
<img src="come-again.gif" />
</div>
</body>
</html>

瀏覽器接受該頁面并將之轉換為樹形結構,如圖 1 所示。

為了保持本文的進度,我做了少許簡化。DOM 或 XML 方面的專家會意識到空白對于文檔文本在 Web 瀏覽器樹結構中表示和分解方式的影響。膚淺的了解只會使事情變得模棱兩可,所以如果想弄清空白的影響,那最好不過了;如果不想的話,那可以繼續(xù)讀下去,不要考慮它。當它成為問題時,那時您就會明白您需要的一切。

除了實際的樹背景之外,可能會首先注意到樹中的一切是以最外層的 HTML 包含元素,即 html 元素開始的。使用樹的比喻,這叫做根元素。所以即使這是樹的底層,當您查看并分析樹的時候,我也通常以此開始。如果它確實奏效,您可以將整個樹顛倒一下,但這確實有些拓展了樹的比喻。

從根流出的線表示不同標記部分之間的關系。head 和 body 元素是 html 根元素的孩子;title 是 head 的孩子,而文本 “Trees, trees, everywhere” 是 title 的孩子。整個樹就這樣組織下去,直到瀏覽器獲得與 圖 1 類似的結構。

一些附加術語

為了沿用樹的比喻,head 和 body 被叫做 html 的分支(branches)。叫分支是因為它們有自己的孩子。當?shù)竭_樹的末端時,您將進入主要的文本,比如 “Trees, trees, everywhere” 和 “really”;這些通常稱為葉子,因為它們沒有自己的孩子。您不需要記住所有這些術語,當您試圖弄清楚特定術語的意思時,只要想像一下樹結構就容易多了。

對象的值

既然了解了一些基本的術語,現(xiàn)在應該關注一下其中包含元素名稱和文本的小矩形了(圖 1)。每個矩形是一個對象;瀏覽器在其中解決一些文本問題。通過使用對象來表示 HTML 文檔的每一部分,可以很容易地更改組織、應用樣式、允許 JavaScript 訪問文檔,等等。

對象類型和屬性

標記的每個可能類型都有自己的對象類型。例如,HTML 中的元素用 Element 對象類型表示。文檔中的文本用 Text 類型表示,屬性用 Attribute 類型表示,以此類推。

所以 Web 瀏覽器不僅可以使用對象模型來表示文檔(從而避免了處理靜態(tài)文本),還可以用對象類型立即辨別出某事物是什么。HTML 文檔被解析并轉換為對象集合,如 圖 1 所示,然后尖括號和轉義序列(例如,使用 < 表示 <,使用 > 表示 >)等事物不再是問題了。這就使得瀏覽器的工作(至少在解析輸入 HTML 之后)變得更容易。弄清某事物究竟是元素還是屬性并確定如何處理該類型的對象,這些操作都十分簡單了。

通過使用對象,Web 瀏覽器可以更改這些對象的屬性。例如,每個元素對象具有一個父元素和一系列子元素。所以添加新的子元素或文本只需要向元素的子元素列表中添加一個新的子元素。這些對象還具有 style 屬性,所以快速更改元素或文本段的樣式非常簡單。例如,要使用 JavaScript 更改 div 的高度,如下所示:

someDiv.style.height = "300px";

換句話說,Web 瀏覽器使用對象屬性可以非常容易地更改樹的外觀和結構。將之比作瀏覽器在內部將頁面表示為文本時必須進行的復雜事情,每次更改屬性或結構都需要瀏覽器重新編寫靜態(tài)文件、重新解析并在屏幕上重新顯示。有了對象,所有這一切都解決了。

現(xiàn)在,花點時間展開一些 HTML 文檔并用樹將其勾畫出來。盡管這看起來是個不尋常的請求(尤其是在包含極少代碼的這樣一篇文章中),如果您希望能夠操縱這些樹,那么需要熟悉它們的結構。

在這個過程中,可能會發(fā)現(xiàn)一些古怪的事情。比如,考慮下列情況:

·屬性發(fā)生了什么?
·分解為元素(比如 em 和 b)的文本呢?
·結構不正確(比如當缺少結束 p 標記時)的 HTML 呢?

一旦熟悉這些問題之后,就能更好地理解下面幾節(jié)了。

嚴格有時是好事

如果嘗試剛提到的練習 I,您可能會發(fā)現(xiàn)標記的樹視圖中存在一些潛在問題(如果不練習的話,那就聽我說吧!)。事實上,在 清單 1 和 圖 1 中就會發(fā)現(xiàn)一些問題,首先看 p 元素是如何分解的。如果您問通常的 Web 開發(fā)人員 “p 元素的文本內容是什么”,最常見的答案將是 “Welcome to a really boring Web page.”。如果將之與圖 1 做比較,將會發(fā)現(xiàn)這個答案(雖然合乎邏輯)是根本不正確的。

實際上,p 元素具有三個 不同的子對象,其中沒有一個包含完整的 “Welcome to a really boring Web page.” 文本。您會發(fā)現(xiàn)文本的一部分,比如 “Welcome to a ” 和 “ boring Web page”,但不是全部。為了理解這一點,記住標記中的任何內容都必須轉換為某種類型的對象。

此外,順序無關緊要!如果瀏覽器顯示正確的對象,但顯示順序與您在 HTML 中提供的順序不同,那么您能想像出用戶將如何響應 Web 瀏覽器嗎?段落夾在頁面標題和文章標題中間,而這不是您自己組織文檔時的樣式呢?很顯然,瀏覽器必須保持元素和文本的順序。

在本例中,p 元素有三個不同部分:

·em 元素之前的文本
·em 元素本身
·em 元素之后的文本

如果將該順序打亂,可能會把重點放在文本的錯誤部分。為了保持一切正常,p 元素有三個子對象,其順序是在 清單 1 的 HTML 中顯示的順序。而且,重點文本 “really” 不是p 的子元素;而是 p 的子元素 em 的子元素。

理解這一概念非常重要。盡管 “really” 文本將可能與其他 p 元素文本一起顯示,但它仍是 em 元素的直接子元素。它可以具有與其他 p 文本不同的格式,而且可以獨立于其他文本到處移動。

要將之牢記在心,試著用圖表示清單 2 和 3 中的 HTML,確保文本具有正確的父元素(而不管文本最終會如何顯示在屏幕上)。

清單 2. 帶有巧妙元素嵌套的標記

<html>
<head>
<title>This is a little tricky</title>
</head>
<body>
<h1>Pay <u>close</u> attention, OK?</h1>
<div>
<p>This p really isn't <em>necessary</em>, but it makes the
<span id="bold-text">structure <i>and</i> the organization</span>
of the page easier to keep up with.</p>
</div>
</body>
</html>

清單 3. 更巧妙的元素嵌套

<html>
<head>
<title>Trickier nesting, still</title>
</head>
<body>
<div id="main-body">
<div id="contents">
<table>
<tr><th>Steps</th><th>Process</th></tr>
<tr><td>1</td><td>Figure out the <em>root element</em>.</td></tr>
<tr><td>2</td><td>Deal with the <span id="code">head</span> first,
as it's usually easy.</td></tr>
<tr><td>3</td><td>Work through the <span id="code">body</span>.
Just <em>take your time</em>.</td></tr>
</table>
</div>
<div id="closing">
This link is <em>not</em> active, but if it were, the answers
to this <a href="answers.html"><img src="exercise.gif" /></a> would
be there. But <em>do the exercise anyway!</em>
</div>
</div>
</body>
</html>

在本文末的 GIF 文件 圖 2 中的 tricky-solution.gif 和 圖 3 中的 trickier-solution.gif 中將會找到這些練習的答案。不要偷看,先花些時間自動解答一下。這樣能幫助您理解組織樹時應用的規(guī)則有多么嚴格,并真正幫助您掌握 HTML 及其樹結構。

屬性呢?

當您試圖弄清楚如何處理屬性時,是否遇到一些問題呢?前已提及,屬性確實具有自己的對象類型,但屬性確實不是顯示它的元素的子元素,嵌套元素和文本不在同一屬性 “級別”,您將注意到,清單 2 和 3 中練習的答案沒有顯示屬性。

屬性事實上存儲在瀏覽器使用的對象模型中,但它們有一些特殊情況。每個元素都有可用屬性的列表,且與子對象列表是分離的。所以 div 元素可能有一個包含屬性 “id” 和另一個屬性 “class” 的列表。

記住,元素的屬性必須具有惟一的名稱,也就是說,一個元素不能有兩個 “id” 或兩個 “class” 屬性。這使得列表易于維護和訪問。在下一篇文章將會看到,您可以簡單調用諸如 getAttribute("id") 的方法來按名稱獲取屬性的值。還可以用相似的方法調用來添加屬性或設置(重置)現(xiàn)有屬性的值。

值得指出的是,屬性名的惟一性使得該列表不同于子對象列表。p 元素可以有多個 em 元素,所以子對象列表可以包含多個重復項。盡管子項列表和屬性列表的操作方式相似,但一個可以包含重復項(對象的子項),而一個不能(元素對象的屬性)。最后,只有元素具有屬性,所以文本對象沒有用于存儲屬性的附加列表。

凌亂的 HTML

在繼續(xù)之前,談到瀏覽器如何將標記轉換為樹表示,還有一個主題值得探討,即瀏覽器如何處理不是格式良好的標記。格式良好 是 XML 廣泛使用的一個術語,有兩個基本意思:

·每個開始標記都有一個與之匹配的結束標記。所以每個 <p> 在文檔中與 </p> 匹配,每個 <div> 與 </div> 匹配,等等。
·最里面的開始標記與最里面的結束標記相匹配,然后次里面的開始標記與次里面的結束標記相匹配,依此類推。所以 <b><i>bold and italics</b></i> 是不合法的,因為最里面的開始標記 <i> 與最里面的結束標記 <b> 匹配不當。要使之格式良好,要么 切換開始標記順序,要么 切換結束標記順序。(如果兩者都切換,則仍會出現(xiàn)問題)。
深入研究這兩條規(guī)則。這兩條規(guī)則不僅簡化了文檔的組織,還消除了不定性。是否應先應用粗體后應用斜體?或恰恰相反?如果覺得這種順序和不定性不是大問題,那么請記住,CSS 允許規(guī)則覆蓋其他規(guī)則,所以,例如,如果 b 元素中文本的字體不同于 i 元素中的字體,則格式的應用順序將變得非常重要。因此,HTML 的格式良好性有著舉足輕重的作用。

如果瀏覽器收到了不是格式良好的文檔,它只會盡力而為。得到的樹結構在最好情況下將是作者希望的原始頁面的近似,最壞情況下將面目全非。如果您曾將頁面加載到瀏覽器中后看到完全出乎意料的結果,您可能在看到瀏覽器結果時會猜想您的結構應該如何,并沮喪地繼續(xù)工作。當然,搞定這個問題相當簡單:確保文檔是格式良好的!如果不清楚如何編寫標準化的 HTML,請咨詢 參考資料 獲得幫助。

DOM 簡介

到目前為止,您已經(jīng)知道瀏覽器將 Web 頁面轉換為對象表示,可能您甚至會猜想,對象表示是 DOM 樹。DOM 表示 Document Object Model,是一個規(guī)范,可從 World Wide Web Consortium (W3C) 獲得(您可以參閱 參考資料 中的一些 DOM 相關鏈接)。

但更重要的是,DOM 定義了對象的類型和屬性,從而允許瀏覽器表示標記。(本系列下一篇文章將專門講述在 JavaScript 和 Ajax 代碼中使用 DOM 的規(guī)范。)

文檔對象

首先,需要訪問對象模型本身。這非常容易;要在運行于 Web 頁面上的任何 JavaScript 代碼中使用內置 document 變量,可以編寫如下代碼:

var domTree = document;

當然,該代碼本身沒什么用,但它演示了每個 Web 瀏覽器使得 document 對象可用于 JavaScript 代碼,并演示了對象表示標記的完整樹(圖 1)。

每項都是一個節(jié)點

顯然,document 對象很重要,但這只是開始。在進一步深入之前,需要學習另一個術語:節(jié)點。您已經(jīng)知道標記的每個部分都由一個對象表示,但它不只是一個任意的對象,它是特定類型的對象,一個 DOM 節(jié)點。更特定的類型,比如文本、元素和屬性,都繼承自這個基本的節(jié)點類型。所以可以有文本節(jié)點、元素節(jié)點和屬性節(jié)點。

如果已經(jīng)有很多 JavaScript 編程經(jīng)驗,那您可能已經(jīng)在使用 DOM 代碼了。如果到目前為止您一直在跟蹤本 Ajax 系列,那么現(xiàn)在您一定 使用 DOM 代碼有一段時間了。例如,代碼行 var number = document.getElementById("phone").value; 使用 DOM 查找特定元素,然后檢索該元素的值(在本例中是一個表單字段)。所以即使您沒有意識到這一點,但您每次將 document 鍵入 JavaScript 代碼時都會使用 DOM。

詳細解釋已經(jīng)學過的術語,DOM 樹是對象的樹,但更具體地說,它是節(jié)點 對象的樹。在 Ajax 應用程序中或任何其他 JavaScript 中,可以使用這些節(jié)點產生下列效果,比如移除元素及其內容,突出顯示特定文本,或添加新圖像元素。因為都發(fā)生在客戶端(運行在 Web 瀏覽器中的代碼),所以這些效果立即發(fā)生,而不與服務器通信。最終結果通常是應用程序感覺起來響應更快,因為當請求轉向服務器時以及解釋響應時,Web 頁面上的內容更改不會出現(xiàn)長時間的停頓。

在多數(shù)編程語言中,需要學習每種節(jié)點類型的實際對象名稱,學習可用的屬性,并弄清楚類型和強制轉換;但在 JavaScript 中這都不是必需的。您可以只創(chuàng)建一個變量,并為它分配您希望的對象(正如您已經(jīng)看到的):

var domTree = document;
var phoneNumberElement = document.getElementById("phone");
var phoneNumber = phoneNumberElement.value;

沒有類型,JavaScript 根據(jù)需要創(chuàng)建變量并為其分配正確的類型。結果,從 JavaScript 中使用 DOM 變得微不足道(將來有一篇文章會專門講述與 XML 相關的 DOM,那時將更加巧妙)。

結束語

在這里,我要給您留一點懸念。顯然,這并非是對 DOM 完全詳盡的說明;事實上,本文不過是 DOM 的簡介。DOM 的內容要遠遠多于我今天介紹的這些!

本系列的下一篇文章將擴展這些觀點,并深入探討如何在 JavaScript 中使用 DOM 來更新 Web 頁面、快速更改 HTML 并為您的用戶創(chuàng)建更交互的體驗。在后面專門講述在 Ajax 請求中使用 XML 的文章中,我將再次返回來討論 DOM。所以要熟悉 DOM,它是 Ajax 應用程序的一個主要部分。

此時,深入了解 DOM 將十分簡單,比如詳細設計如何在 DOM 樹中移動、獲得元素和文本的值、遍歷節(jié)點列表,等等,但這可能會讓您有這種印象,即 DOM 是關于代碼的,而事實上并非如此。

在閱讀下一篇文章之前,試著思考一下樹結構并用一些您自己的 HTML 實踐一下,以查看 Web 瀏覽器是如何將 HTML 轉換為標記的樹視圖的。此外,思考一下 DOM 樹的組織,并用本文介紹的特殊情況實踐一下:屬性、有元素混合在其中的文本、沒有 文本內容的元素(比如 img 元素)。

如果扎實掌握了這些概念,然后學習了 JavaScript 和 DOM 的語法(下一篇文章),則會使得響應更為容易。

而且不要忘了,這里有清單 2 和 3 的答案,其中還包含了示例代碼!

圖 2. 清單 2 的答案

利用 DOM 進行 Web 響應[多圖]圖片2

圖 3. 清單 3 的答案

利用 DOM 進行 Web 響應[多圖]圖片3

 
 

分享:寫給XML初學者的一些話
差不多每天都有人問“什么是 XML”,“XML 能做什么”,“XML 能不能替我做這個”, “XML 會取代什么” 等等諸如此類的問題。由于最近一段時間稍微對 xml 使用了一下, 我來談談自己的感覺。這些經(jīng)驗都很淺顯,任何一個用過 xml 的人都有,并且見仁見智, 只

來源:模板無憂//所屬分類:Xml教程/更新時間:2010-04-09
相關Xml教程
久久一级电影| 可以免费看的av毛片| 亚洲伊人精品酒店| 国内精品免费**视频| 日韩欧美色综合| 国产一区二区三区高清视频| 中文字幕在线看高清电影| 我爱我色成人网| 精品综合免费视频观看| 亚洲第一免费网站| 日本午夜精品电影| 天天综合天天做| 婷婷综合电影| 亚洲欧洲日韩女同| 97精品国产97久久久久久春色 | 欧美成人免费高清视频| 精品国产青草久久久久96| 亚洲色图插插| 色悠悠久久综合| 亚洲mm色国产网站| 亚洲狠狠婷婷综合久久久久图片| 亚洲青青一区| 99久久国产综合精品麻豆| 在线播放日韩欧美| 青青草国产精品视频| 黄色一区二区视频| 亚洲精品影视| 欧美电影一区二区| 欧美视频小说| 国产在线成人精品午夜| 午夜精品久久久久久久四虎美女版| 亚洲国产aⅴ天堂久久| 国产玖玖精品视频| 波多野结衣福利| 亚洲视频三区| 日韩一区在线看| 国产91色在线|| 国产伦精品一区二区三区精品| 日本欧美韩国| 久久先锋影音av| 久久久久久成人| 天堂网成人在线| 51一区二区三区| 久久这里只有精品6| 欧美精品www| 国产无遮挡猛进猛出免费软件| 亚洲欧洲综合在线| 成人短视频下载| 久久久久久九九九| 在线观看av免费观看| 国产第一亚洲| 国产欧美日韩视频在线观看| 欧美自拍大量在线观看| 99热超碰在线| 精品国产导航| 亚洲国产一区二区在线播放| 亚洲jizzjizz日本少妇| 老司机成人免费视频| 久久高清免费| 欧美无乱码久久久免费午夜一区| 欧美一级爱爱| 黄色av网站免费观看| 男人的天堂成人在线| 国产视频久久久| 天天夜碰日日摸日日澡性色av| 亚洲国产精品欧美久久| 风间由美一区二区三区在线观看| 久精品免费视频| 又大又长粗又爽又黄少妇视频| 国产专区精品| 亚洲欧美一区二区三区久本道91| 成人综合网网址| 丝袜 亚洲 另类 欧美 重口| 欧美精品九九| 精品国产123| 日日碰狠狠添天天爽超碰97| 天堂v在线观看| 久久亚洲综合av| 国产精品成av人在线视午夜片 | 亚洲色图欧美在线| 1卡2卡3卡精品视频| 久久免费公开视频| 亚洲永久字幕| 在线视频欧美日韩| 奇米777在线视频| 啪啪激情综合网| 色哟哟日韩精品| 亚洲欧洲日夜超级视频| 99精品人妻无码专区在线视频区| 大尺度一区二区| 国产成人精品优优av| 黄色一级片一级片| 亚洲天堂黄色| 国产一区av在线| 91在线第一页| 台湾亚洲精品一区二区tv| 欧美在线观看一二区| 中日韩在线视频| 日韩性xxxx| 国产精品午夜在线| 99re在线视频上| 国内精品福利视频| 狠狠色2019综合网| 91国产一区在线| 少妇愉情理伦三级| 日韩一区二区久久| 日韩在线视频观看正片免费网站| 成人三级做爰av| 国产成人av| 日韩女优电影在线观看| 无码日韩人妻精品久久蜜桃| 国产亚洲高清在线观看| 福利视频导航一区| 国产精品波多野结衣| 神马午夜精品95| 国产精品成人免费| 麻豆久久久9性大片| 91久久精品国产91性色69 | 国产精品每日更新| 国产私拍一区| 97在线公开视频| 久久久噜噜噜久久人人看 | 色狠狠久久av综合| 欧美一区二区视频在线观看| 黄色片久久久久| 国产精品chinese在线观看| 欧美日韩一区二区三区视频| 国产免费观看高清视频| 久久国际精品| 欧美性xxxxx极品少妇| 给我免费播放片在线观看| 国产亚洲久久| 欧美日韩视频在线观看一区二区三区 | 精品成人在线视频| 国产av第一区| 97色婷婷成人综合在线观看| 色综合久久综合网97色综合| 欧美黄色免费网址| 欧美一区在线观看视频| 欧美视频自拍偷拍| 久久久久久久久久久免费视频| 99久久香蕉| 69堂精品视频| 老司机午夜性大片| 日韩欧美自拍| 在线电影av不卡网址| 欧美大片免费播放器| 亚洲激情另类| 高清欧美性猛交xxxx| 久久精品国产亚洲av无码娇色| 国产一区二区精品久久| 国产欧美最新羞羞视频在线观看| 波多野结衣啪啪| 久久久一区二区三区捆绑**| 黑人巨大精品欧美一区二区小视频 | 精品中国亚洲| 精品国产1区2区3区| 国产伦理在线观看| 伊人久久久大香线蕉综合直播| 九九精品在线播放| 欧美成人aaa片一区国产精品| 国产毛片一区二区| 亚洲综合色av| 国产 日韩 欧美 精品| 亚洲欧美另类综合偷拍| 一级二级三级欧美| 国产精品久久久久久av公交车| 欧美嫩在线观看| 午夜天堂在线视频| 欧美黄色免费| 久久久免费电影| 日韩精品成人一区| 久久精品一区二区三区四区| 日韩av一区二区三区美女毛片| 欧美日韩在线精品一区二区三区激情综合 | 久久久精品免费| 丰满少妇高潮久久三区| 成人av免费观看| 久久青青草原一区二区| 欧美精品日日操| 欧美日韩国产综合视频在线观看 | 成人做爰视频www| 欧美放荡的少妇| 成人区人妻精品一区二| 视频一区中文字幕| 91久热免费在线视频| 蜜臀久久久久久999| 在线一区二区三区做爰视频网站| 久久婷五月综合| 欧美色一级片| 国产成人精品国内自产拍免费看| 中文字幕久久久久| 亚洲一区二区视频| 午夜免费一区二区| 你懂的网址国产 欧美| 91黑丝高跟在线| 在线不卡免费视频| 亚洲成人动漫在线观看| 熟妇人妻无乱码中文字幕真矢织江| 亚洲欧美网站在线观看| 91成人国产在线观看| 一级黄色片在线播放| 婷婷久久综合九色综合绿巨人 | 91精品久久久久久久久久久久久| 黄色av免费观看| 欧美色成人综合| 日韩精品人妻中文字幕有码| 麻豆精品蜜桃视频网站| 国产精品国色综合久久| 成人午夜sm精品久久久久久久| 日韩欧美国产高清| 欧洲美熟女乱又伦| 成人晚上爱看视频| 一区二区不卡在线观看| 日韩成人一级| 色综合色综合久久综合频道88| 国产午夜麻豆影院在线观看| 一区二区三区小说| 亚洲一区二区蜜桃| 翔田千里一区二区| 99国产视频| 日韩毛片免费视频一级特黄| 日韩精品中文字幕在线| 国产三级国产精品国产国在线观看| 91麻豆视频网站| 日韩精品一区二区三区电影| 欧美日韩一二三四| 97av在线播放| jizz中国女人| 69堂成人精品免费视频| 一级在线观看视频| 久久一二三国产| 久久亚洲中文字幕无码| 午夜欧美精品| 成人欧美一区二区三区在线| 欧美日韩国产网站| 亚洲欧美国产精品| www.中文字幕在线观看| 亚洲第一狼人社区| 黄色片子免费看| 精品系列免费在线观看| 四虎永久国产精品| 欧美丝袜一区| 国产精品高潮呻吟久久av无限| 午夜国产在线观看| 亚洲黄色av网站| 国产在线综合网| 午夜视频久久久久久| 香蕉视频1024| 高清国产一区二区三区| 日韩在线视频在线| 欧美片第1页综合| 99理论电影网| 国产成人福利av| 久久久久久久影院| 秋霞网一区二区| 精品亚洲一区二区三区在线观看 | 亚洲欧洲综合网| 亚洲天堂网中文字| www.欧美激情.com| 国产成人免费xxxxxxxx| 99热久久这里只有精品| 99亚洲视频| 免费一区二区三区在在线视频| 欧美日韩一区二区三区在线电影| 97婷婷大伊香蕉精品视频| 欧美性受xxxx狂喷水| 日韩成人xxxx| 欧美精品一二三四区| 欧洲精品在线观看| 国产高清视频免费在线观看| 亚洲日本韩国一区| 国产sm在线观看| 不卡免费追剧大全电视剧网站| 国产v片免费观看| 美女国产一区| 中文字幕中文字幕在线中心一区 | 欧美成人dvd在线视频| 国产一区二区三区网| 国产在线视频91| 亚洲第一二区| 国产91对白在线播放| 国精品产品一区| 欧美激情网友自拍| 亚洲日本天堂| 日韩在线资源网| 性猛交xxxx乱大交孕妇印度| 亚洲理论在线a中文字幕| 欧美在线视频精品| 精品国产一区久久| 国产情侣自拍av| 欧美日韩精品系列| 亚洲精品www久久久久久| 欧美制服丝袜第一页| 欧美成人黄色网| 色偷偷成人一区二区三区91| 熟女少妇a性色生活片毛片| 五月激情综合色| 久久人妻无码aⅴ毛片a片app| 五月天久久比比资源色| 91ts人妖另类精品系列| 亚洲福利视频导航| 日本精品久久久久中文| 亚洲午夜成aⅴ人片| 国产一二三四区在线| 五月综合激情网| 免费黄色激情视频| 一本色道久久综合亚洲91| 91高清免费观看| 中文字幕av不卡在线| 日韩久久综合| 国产伦精品一区二区三区四区视频 | 国产毛片欧美毛片久久久| 亚洲综合久久久| 亚洲熟女少妇一区二区| 丰满岳妇乱一区二区三区| 欧美日韩精品在线观看视频| 欧洲av在线精品| 日韩xxxxxxxxx| 欧美刺激午夜性久久久久久久| 国产午夜无码视频在线观看| 精品国产91亚洲一区二区三区婷婷| 中文字幕一二三四| 亚洲欧美激情一区| 韩国av永久免费| 久久久成人的性感天堂| 欧美精选视频一区二区| 97久久久免费福利网址| 日韩精品一区国产| 国产日韩精品入口| 成人午夜国产| 日韩欧美一区二区视频在线播放| 先锋影音久久久| 黄色免费福利视频| 成人白浆超碰人人人人| 中文字幕第三区| 亚洲欧美日韩国产成人精品影院 | 免费看黄色a级片| 极品销魂美女一区二区三区| 国产v亚洲v天堂无码久久久 | 亚洲天堂av一区二区| 日本一区二区视频在线| a级大片在线观看| 欧美日韩中文字幕| 三级黄色在线视频| 亚洲福利视频专区| 天天摸夜夜添狠狠添婷婷 | 久久久加勒比| 国产精品亚洲美女av网站| 国内精品久久久久久久影视简单 | 99精品热6080yy久久| 毛片在线视频观看| 粉嫩aⅴ一区二区三区四区 | 7878成人国产在线观看| 国产又粗又猛又爽又黄的| 久久久999成人| 日韩一二三区| 国产伦精品一区二区三毛| 亚洲美女一区| 不卡影院一区二区| 中文字幕不卡的av| 亚洲波多野结衣| 精品美女在线播放| 手机在线观看毛片| 国产成人一区二区三区小说| 欧美一站二站| 天天干天天色天天爽| 国产不卡一区视频| 成人性生活免费看| 91成人免费网站| 一级特黄aaa大片在线观看| 欧美成人三级视频网站| 精品素人av| 欧美日韩一区在线观看视频| 蜜臀av一区二区在线免费观看| 欧美特黄aaa| 亚洲va欧美va国产va天堂影院| 久久久精品福利| 日韩视频免费中文字幕| 亚洲一区二区三区免费| 久久综合给合久久狠狠色| 免费观看在线色综合| 熟妇无码乱子成人精品| 色偷偷久久人人79超碰人人澡| 亚洲天堂avav| 久久人人爽人人| 久久精品国产亚洲夜色av网站| 日韩中文在线字幕| 97精品久久久午夜一区二区三区 | 国产精品自拍偷拍视频| 欧美三区不卡| www日韩视频| 一区二区三区加勒比av| 国产又粗又猛又黄视频| 欧美国产日韩二区| 国产真实有声精品录音| 亚洲色成人www永久在线观看| 久久日韩粉嫩一区二区三区| 国产又粗又硬又长又爽| 精品在线小视频|