在JavaScript中為什麼要使用DOM

2021-01-07 算法與編程之美

1.問題描述

通過上次web課的學習,老師給我們講解了什麼是DOM,可能由於自己學習層次太淺,一直沒搞明白為什麼要使用DOM,直接用HTML不是更方便嗎?所以接下來我就談談這個問題。

2.問題分析

首先我們都知道HTML是一種用來描述網頁的標記語言,是使用標記標籤來描述網頁的,Web瀏覽器的作用是讀取HTML文檔,並以網頁的形式顯示出它們。瀏覽器不會顯示HTML標籤,而是使用標籤來解釋頁面的內容。然後我們也清楚DOM是Document Object Model(文檔對象模型)的縮寫,那麼它是幹什麼的呢?

通過各種資料和百度可以得知,DOM是W3C(全球資訊網聯盟)的標準。DOM定義了訪問HTML和XML文檔的標準DOM是中立於平臺和語言的接口,它允許程序和腳本動態地訪問和更新文檔的內容、結構和樣式。HTML DOM將HTML文檔視作樹結構。這種結構被稱為節點樹。下面就是W3Cschool上面的HTML DOM Tree實例:

下面生動形象的用實例講解的DOM樹:

通過 HTML DOM,樹中的所有節點均可通過JavaScript 進行訪問。所有 HTML 元素(節點)均可被修改,也可以創建或刪除節點。

DOM,簡單點來說就是將你的客戶端(IE/Google等)以樹狀結構從大到小拆分成單一的對象讓你進行操作。通過JavaScript,可以重構整個HTML文檔。可以自由的進行添加、移除、改變或者重排頁面上的項目。只要想改變頁面某個東西,都可以用JavaScript獲得對HTML文檔中所有元素進行訪問的入口,而這些入口和對HTML元素進行添加、移動、改變或移除的方法和屬性,都是通過DOM來獲得的。也就是說,DOM可以幫助JavaScript能更好的和頁面進行交互。

3.總結

通俗的講,DOM定義了表示和修改文檔所需的對象、行為和屬性,以及這些對象之間的關係。當你想要改變網頁行為的時候你該怎麼辦呢?你不會用腳來踹網頁或者用頭來頂網頁吧?這時候怎麼辦呢 ?正好你手中有JavaScript 這種工具!所以你就會考慮用JavaScript來改變網頁行為,而這時候你會想 我怎麼改變呢?而我發現 網頁原來有接口的,就好像你推車有車柄一樣,你可以作用於車柄讓它往前走,同樣的你也會作用於網頁的接口改變他的行為,而這個接口就是DOM。所以 JavaScript和DOM 就好像你的手和車柄一樣,你不會用你的頭去撞車柄,同樣你也不會用CSS去改變網頁行為!當然手也不只是限於推車,還可以做別的事情,JavaScript也一樣可以幹別的事情!

所以通過比較HTML和DOM,我們可以發現,HTML的優點是方便直觀,能較快速的掌握布局,缺點是無法動態地綁定局部事件,不能直接保存子元素以便以後的動態修改。但DOM操作正好可以彌補這些。

更多精彩文章:

什麼是機器學習

關於網頁首頁設計的一點思考

新手小白應該如何學習MUI

聊一聊編程的本質

深入理解瀏覽器內核 - 概述

深入理解瀏覽器內核 - 瀏覽器內核介紹

深入理解瀏覽器內核 - 瀏覽器內核依賴關係

python快速求解不定積分和定積分

AI告訴你張無忌最愛的竟是...

Jupyter快速編輯高大上數學公式 泰勒展開式

Jupyter快速編輯高大上數學公式 常見希臘字母

基本初等函數 指數函數

基本初等函數 指數函數 代碼篇

聊一聊JavaWeb面試

聊一聊單片機和伺服器

50行代碼實現簡單的網站伺服器

50行代碼實現網站伺服器 2

50行代碼實現網站伺服器 3

Tomcat源碼分析之 doGet方法(一)

Tomcat源碼分析之 doGet方法(二)

Tomcat源碼分析之 doGet方法(三)

Tomcat源碼分析之 doGet方法(四)

Tomcat源碼分析之中文亂碼(一)

一種基於狀態機的 DOM 樹生成技術(1)

一種基於狀態機的 DOM 樹生成技術(2)

點擊頁面右下角「寫留言」發表評論,期待您的參與!期待您的轉發!

相關焦點

  • JavaScript學習筆記(二十)DOM動畫效果
    null; t = setInterval(function(){ }) 運動的終止條件 t = setInterval(function()) // 元素的屬性值 === 目標點if(dom.attr
  • 在JavaScript中,使用replace()、test()和exec()方法匹配字符串
    ;var res = str.replace(/Microsoft/i, "Google");document.write(res);</script>replace()方法的參數說明如下:第1個參數可以是查找的字符串,也可以是一個正則表達式,此例子中是一個正則表達式。第2個參數是最終要替換為的新字符串。
  • Javascript去除字符串中的點或其他符號
    今天在寫一個前端頁面的時候遇到了一個ip參數問題,我想把ip值中的點替換成 - 的形式。在前端上使用javascript進行操作的。測試了兩次沒有好用,程序直接把整個字符串都進行了替換,在考慮這個是為什麼呢?
  • 什麼是JavaScript對象?如何創建並引用?這就告訴你!
    主要內容:對象的創建鍵名和鍵值對象的引用Math對象Date對象學習目標:為什麼要使用對象?宿主對象:dom(文檔對象模型),bom(瀏覽器對象)。自定義對象:我們自己定義和開發的對象。二、對象的創建(重點)2.1怎樣創建對象語法:var obj = { key : value };上面代碼定義了一個對象,它被賦值給變量obj。
  • 七天學會javascript第一天javascript介紹
    javascript介紹javascript數據類型javascript運算符javascript對象javascript Date對象javascript String對象JavaScript常用於實現一些前端效果。前些年流行的flash已經慢慢的被淘汰,js盛行起來。javascript :客戶端編程。javascript是由客戶端去解釋運行的。
  • javascript在自動化測試項目中的應用「軟體測試開發入門教程」
    比如說我今天分享的主題是javascript在自動化測試中的應用有些朋友說我之前講的自動化測試的東西,需要消化很久,有一定的難度,意思就是說我動不動就講測試框架,測試開發是不是會有這樣的感覺?比如今天分享的javascript,大家做軟體測試有沒有用過?
  • 在Python Selenium WebDriver中使用JavaScript執行操作
    在本教程中,讓我們分析Selenium WebDriver中使用最少但功能最強大的功能。是的,我將討論JavaScript執行器,並向您展示通過Python Selenium WebDriver執行JavaScript語句的幾種不同方法。可能會發生這種情況,在某些實時項目中,Selenium WebDriver無法對特定的Web元素執行操作。
  • JavaScript中的「黑話」
    「算術」算術中的位運算已被作者列為禁術,因此希望你在工程中使用位運算時,請確保你有充足的理由使用,並在需要時寫好Hack注釋。!與!!!為邏輯非操作符,可以應用於ECMAScript中的任何值,無論這個值是什麼類型,它會被強制轉化為一個布爾值變量,再對其值取反。!!
  • JavaScript入門教程
    起源javascript前身叫做livescript,sun公司推出java,netspace公司引進java的概念,重新設計livescript,並更名javascript。發明者,布蘭登.艾克,表單驗證原先要經過伺服器,伺服器壓力大,等待時間長,js僅在客戶端就可完成。是什麼是一種腳本語言,是一種輕量級的程式語言。
  • 來一輪帶注釋的demo,徹底搞懂javascript中的replace函數
    javascript這門語言一直就像一位帶著面紗的美女,總是看不清,摸不透,一直專注伺服器端,也從來沒有特別重視過,直到最近幾年,javascript越來越重要,越來越通用。最近和前端走的比較近,藉此機會,好好鞏固一下相關知識點。
  • 開發者最容易犯的13個JavaScript錯誤
    變量abc已經在局部函數中被定義,因為他們已經在主函數中作為參數被聲明。局部函數中的任何函數都可創建主函數中定義的所有變量的閉包。因此不需要再次傳遞它們。 看看這裡 JavaScript Closures FAQ 了解更多。 解決辦法:使用閉環來簡化你的代碼。
  • 在JavaScript字符串的search()方法中,如何匹配正則表達式?
    在各個程式語言中,也會推出一些與正則表達式相關的輔助操作,如替找操作等。第三節:正則表達式語法在JavaScript中,對於正則表達式的定義,使用字面量表示法的基本語法如下:/模式/修飾符基本語法說明如下:使用兩個/來表示一個正則表達式匹配模式。第一個/後面跟匹配模式。
  • 使用HTML5和Javascript設計繪圖程序
    設計好後的繪圖應用,效果如下圖:  在這個應用中,用戶點左邊的四種顏色筆,就可以在指定的矩形框中隨便塗鴉,也可而已點右面兩種不同的筆觸效果(crayon蠟筆)和普通筆,也可以使用橡皮擦,也可以使用右下角四種不同的筆觸大小。
  • JavaScript - Math對象
    Math對象在我們js中其實是有很多數學計算的需求的,不過不必擔心系統給我們提供了大量的數學運算的方法供我們使用而這些方法全都存在於我們的Math對象中Math常用的屬性:Math.PI 相當於π 3.14159Math對象常用的函數
  • 從setTimeout(fn,0)函數剖析JavaScript的執行機制
    在zepto源碼中,$fn對象的ready函數有一句setTimeout(fn,0)的函數,如下圖所示:setTimeout(fn,time)作為一個延時函數,在很多時候都會使用,而time是相應的延時時間;如果time為0時,按道理說就要不延時而立即執行了,那為什麼需要特意將fn套在setTimeout裡面而不直接正常執行呢
  • 第五篇:JavaScript事件處理
    初識JavaScript事件JavaScript語言本身不會產生事件,產生事件的是網頁文檔和網頁文檔中的HTML元素。什麼是事件呢?事件就是網頁文檔或網頁元素對外發出的通知。當HTML元素與用戶發生交互行為時,該元素會觸發相關的交互事件,例如:當用戶用滑鼠單擊網頁中的按鈕時,按鈕會觸發滑鼠單擊事件(onclick)。
  • 【第1162期】2018 要學習的優秀 JavaScript 庫與知識
    在職位列表中, React 完全取代了 jQuery 之前的位置——這是十年來第一個超越 jQuery 的庫¹。我們看到一個時代的終結。為了增強數據的可靠性,我成對的搜索 「軟體」 相關的關鍵字擴大相關性,然後乘以大約 1.5 (粗糙的區分那些編程工作列表使用 「軟體」 關鍵字和不使用的)。所有相關的都按日期排序記錄相關性,其結果不一定 100% 準確,但是已經足夠用來在此文中表示粗略的度。
  • 第41節 Document文檔節點-Javascript
    ;當創建一個元素,並且分配ID後,必須要使用appendChild、insertBefore等方法把元素插入到文檔中,之後才能使用getElementById()方法獲取到;var elt = document.createElement("div");elt.id = "myelt";document.body.appendChild(elt); // myelt,添加到文檔對後,
  • AJAXRPC: javascript調用服務端方法
    它允許你使用Javascript調用服務端方法,基於JSON數據協議,開源授權(LGPL),可同步和異步調用。 使用AJAXRPC,您可以像開發傳統的C/S程序一樣,來開發WEB程序,讓WEB開發更簡單和高效。 支持服務端語言:Java、.Net、PHP。 支持瀏覽器:IE、FireFox、Opera、Safari、Chrome。