第六篇:DOM對象與Document

2020-12-14 米粒教育

DOM對象概述

DOM是一套Web標準,它定義了訪問HTML文檔對象的一套屬性、方法和事件,DOM實際上是建立網頁與JavaScript語言溝通的橋梁。

對象模型結構

DOM的英文全稱是Document Object Model,即文檔對象模型。文檔一般是指HTML文檔,DOM對象模型將HTML文檔組織為以Node對象為節點的層次結構。一個節點是一個Node對象。Node對象按照節點類型分為元素節點、屬性節點、文本節點和注釋節點。

元素節點(也稱為元素對象)由元素節點、屬性節點、文本節點和注釋節點構成。

元素對象結構如下圖所示:

在DOM對象模型中,Document是文檔對象,通過Document對象可以獲取所有HTML文檔中的元素對象。Document對象結構如下圖所示:

瀏覽器在解析HTML文檔時,若遇到<body>標籤和<frame>,會自動創建Window對象,Windos對象是DOM對象模型中最頂層的對象,通過Windos對象可以獲取Document對象。

DOM對象層次結構

DOM最頂層是Window對象,Window對象下面是Document(文檔對象)、Navigator(瀏覽器對象)、Screen(屏幕對象)、History(瀏覽歷史對象)、Location(URL對象)。

DOM對象層次結構如下圖所示:

DOM對象的使用

應用DOM可以完整解析HTML網頁,DOM會在內存中構建一棵完整的解析樹,來實現對網頁文檔的動態訪問和操作,它把網頁所有的HTML元素都解析為樹上層次分明的節點,然後可以對這些節點進行添加、修改、刪除和查看等操作。

在DOM樹中,Window對象是樹的根節點,Document對象是Window的子節點,也可以說Window對象是Document對象的父節點。Winodw對象表示瀏覽器打開的窗口,它是一個全局對象,瀏覽器窗口內所有的計算和操作都在窗口環境中,因此Window對象的屬性也可以直接作為全局變量來使用。

例如:documet對象是Window對象的屬性,在JS函數中可以直接使用documet對象,而不必寫winodw.document。

同樣也可以把Window對象的方法作為全局函數來使用。例如:alert()方法是Window對象的方法,在JS函數內可以直接寫alert(),而不必寫window.alert()。

案例1:遞歸遍歷DOM節點

<html><head><title>JavaScript開發案例</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><script type="text/javascript"> // 遞歸遍歷節點 function travel_node(node) { // 遍歷node所有子節點 for(var i = 0; i < node.childNodes.length; i++){ // 若節點是元素節點且子節點大於0 if(node.childNodes[i].nodeType == 1 && node.childNodes[i].childNodes.length > 0) { // 拼接節點名稱 tagName = "<" + node.childNodes[i].nodeName + ">" document.getElementById("text_info").innerText += tagName; // 遞歸遍歷子節點 travel_node(node.childNodes[i]) } } } function travel() { // document對象的documentElement屬性HTML元素的根節點 travel_node(document.documentElement) } </script></head><body><p>朝辭白帝彩雲間,</p><p>千裡江陵一日還。</p><p>兩岸猿聲啼不住,</p><p>輕舟已過萬重山。</p><p><span style=" margin-left:30px;" id="text_info"></span></p><input type="button" value="遍歷DOM元素" onclick="travel()"/></body></html>

相關焦點

  • DOM介紹
    1、DOM的數據結構表示DOM是HTML文檔的對象模型。一個HTML文檔中的所有元素,通過DOM,可以表示成一個個的對象,並且這些對象之間的關係可以用樹形數據結構來表示。,HTML中的元素是Document對象的成員對象。
  • 由淺入深的理解和探究JavaScript的文檔對象模型DOM
    今天和大家一起分享學習JavaScript的文檔對象模型DOM,話不多說,直接開始吧!一、什麼是DOM?1、DOM 即 Document Object Model 文檔對象模型,將標記語言文檔的各個組成部分,封裝為對象。
  • HTML文檔的訪問埠DOM (Document Object Model)
    特別注意:Document 對象是 Window 對象的一部分,可通過 window.document 屬性對其進行訪問。集合 描述all[] 提供對文檔中所有 HTML 元素的訪問。
  • kbone 高級 - 擴展 dom/bom 對象和 API
    2.3 創建入口頁面在 /src/ 下創建 main.mp.js 文件,內容如下:import Vue from &39;import App from &39;export default function createApp() { const container = document.createElement
  • python中xml.dom來解析xml
    前言從上一篇文章我們介紹了解析xml的三種方式:sax、dom和elementtree。隨後我們在文章python中怎樣解析xml? 中又介紹了使用sax方式來解析xml。那麼使用xml.dom又是如何來解析xml的呢?
  • javascript基礎教程八js中獲取 DOM 的方法
    一、js中獲取 DOM 的方法document.getElementById() 根據 id 獲取 dom 元素對象參數:元素id返回值:根據元素id獲取到的 DOM 對象,如果獲取不到返回 null注意:如果 ID 名字相同:那麼獲取第一個;getElementById 的上下文必須是 documentvarparent=document.getElementById
  • DIY一個輕量級的react(一)渲染DOM元素
    元素對象定義在開始開發之前,我們先回顧一下react對於dom元素的定義。渲染DOM元素方法接下來我們就來創建一個render方法,接收要渲染的元素對象和他的容器,來創建他的dom樹並插入到容器中去。function render(element, parentDom) { const { type, props } = element; const dom = document.createElement(type); const childElements = props.children || []; childElements.forEach(childElement
  • 學習筆記:DOM的元素操作
    1.document.getElementById('id名') 根據id名返回第一個元素對象 2.document.getElementsByTagName('標籤名')根據標籤返回元素對象集合 類數組 - 遍歷length 3.document.getElementsByClassName
  • PHP中使用DOMDocument來處理HTML、XML文檔
    這個例子中就是獲取百度的文本框,直接使用 getElementById() 方法獲得id為指定內容的 DOMElement 對象。然後就可以獲取它的值、屬性之類的內容了。使用 createElement() 方法創造 DOMElement 對象,然後就可以為它添加屬性和內容。使用 appendChild() 方法就可以為當前的 DOMElement 或者 DOMDocument 添加下級節點。最後使用 saveXML() 就能夠生成標準的XML格式內容了。
  • jQuery對象與dom對象相互轉換
    其中html()是jQuery裡的方法這段代碼等同於用DOM實現代碼: document.getElementById("id").innerHTML; 雖然jQuery對象是包裝DOM對象後產生的,但是jQuery無法使用DOM對象的任何方法,同理DOM對象也不能使用jQuery裡的方法.
  • HTML DOM對象常用的方法
    這節內容是&34;教程中第八個專題&34;的第六節。希望想掌握這方面知識的朋友能參考我的教程學習。第六節 HTML DOM對象常用的方法大家好,我們開始HTML DOM常見對象的方法的講解,所謂的方法就是對象自身的動作。
  • MutationObserver: dom變化監聽 給你代碼
    如何來監聽dom變化?工作中突然有一個需求,必須你要監聽dom的插入,那麼就需要去監聽dom變化。在一般印象中,監聽事件應該是這麼實現的比如 xx.addEventListener(xxx)。而實際上關於這個dom變化有一套html5標準。
  • 原生JS之DOM選擇器
    DOM選擇器有幾下幾種:1.document.getElementById(id名稱) 按照id來選擇節點2.document.getElementsByName(name名稱)3.document.getElementsByTagName(元素名稱)4.document.getElementsByClassName(類名稱)
  • 通往中高端Web前端:瀏覽器篇
    前言這裡系列到此已經發布的四篇,分別是:一篇CSS篇、3篇JavaScript。沒收到推送的朋友可以在我的歷史文章中查看。今天的內容,是瀏覽器篇,希望可以給大家帶來幫助。正文1.結合 dom樹 與 style樹,生成渲染樹layout: 布局GPU painting: 像素繪製頁面5.
  • Vue.js 3.0 組件是如何渲染為DOM 的?
    接下來,我們通過簡化版源碼來驗證這個結論:// packages/runtime-dom/src/index.ts// 定義渲染器變量let renderer// 創建一個渲染器對象// 惰性創建渲染器(當用戶只依賴響應式包的時候可以通過 tree-shaking 的方式移除核心渲染邏輯相關的代碼)function ensureRenderer
  • 前端面試(原生js篇) - DOM
    答:有 js 的語法核心 ECMAScript,還有文檔對象模型 DOM,以及瀏覽器對象模型 BOM。問:那你覺得 dom 的作用是什麼?答:喵喵喵???問:我換一個問法吧,如果沒有 DOM,會對開發有什麼影響?答:那根本沒法開發啊。
  • 原生JS實現document.ready以及和window.onload的先後順序
    jQuery 裡面的文檔就緒用法在jQuery裡面,我們可以看到兩種寫法:$(function(){}) 和 $(document).ready(function(){}),這兩個方法的效果都是一樣的,都是在dom文檔樹加載完之後執行一個函數,(注意,這裡面的ready
  • 第41節 Document文檔節點-Javascript
    對象是Document的一個實例,更具體一點,是HTMLDocument的一個實例,其表示整個HTML頁面;並且document對象也是window對象的一個屬性,可以將其作為全局對象來訪問;因此document對象,既屬於BOM又屬於DOM的對象;Document節點的特徵:nodeType的值為9nodeName的值為#documentnodeValue的值為nullparentNode
  • 遍歷dom的工具 XPath真不簡單
    ./) { |character| character.upcase } 但是如果歌詞被保存肯html格式就沒有這麼簡單了,因為dom結構本身並沒有」行」的概念,所以沒有辦法使用一個簡單的正則表達式來識別行。
  • JavaScript操作DOM的那些坑
    PS:IE 中的所有 DOM 對象都是以 COM 對象的形式實現的,這意味著 IE 中的 DOM可能會和其他瀏覽器有一定的差異。 Node 接口   document.documentElement.clientWidth   或者 document.body.clientHeight  document.body.clientWidth   Document對象的body屬性對應HTML文檔的<body>標籤。