iT邦幫忙

1

[快速入門前端 59] JavaScript:DOM (1) Document Object Model 簡介

  • 分享至 

  • xImage
  •  

DOM 是什麼?

到目前為止我們大約花了二十多個篇幅來介紹 JavaScript 的基本用法,可能有人會想說講了這麼多,JavaScript 跟畫面到底有什麼關係? 又是怎麼控制畫面的呢?
答案是靠 DOM!
DOM 的全名是 Document Object Model,也就是「文件物件模型」,它以 HTML 檔案中的 document 為起點,將前端的各個 Element,包括 <htmle><div>、文字內容等解析為 Node (節點) 為一個龐大的樹狀結構,而 JavaScript 就是透過 DOM 來操控網頁中指定的元素,讓我們的網頁「動起來」。

DOM 的樹狀結構 (以簡單的 HTML 結構為例)

<!DOCTYPE html>
<html lang="en">
<head>
    <title>My Sample</title>
</head>
<body>
    <h1>Content Start</h1>
    <a href="https://google.com">Go to google</a>
</body>
</html>

https://ithelp.ithome.com.tw/upload/images/20230811/20158509Zb4TElthHk.jpg

Node 節點

Node 節點 是構成 HTML 文檔的基本單元,也是樹狀圖中每一個方形,通常分為四種:DocumentElementTextElement

  • Document
    Doment 是指目前所在頁面的整份 HTML 檔,是所有的元素和節點的開頭。
  • Element
    文件內每個標籤都是一個 Element,例如範例的 <head><body><h1><a> 等。
  • Text
    指被 Element 包裹的文字內容,例如範例中被 <h1> 標籤包起來的 "Content Start"
  • Attribute
    指 HTML 標籤中的屬性,例如 <a>href、標籤的 id 屬性等等

Node Properties 節點屬性

Node Properties 故名思義是指節點中的屬性,在我們獲取到節點後,可以利用 Node.屬性 來獲取該節點的名稱、類型、值等資料。

nodeName nodeType nodeValue
Document #document 9 null
Element 標籤名稱 1 null
Text #text 3 屬性值
Attribute 屬性名稱 2 文字內容

範例:

document.nodeType; // 9
document.nodeName; // '#document'

Element Properties 元素屬性

針對 HTML 的 element 還有更多屬性可以讓我們獲資訊,利如 tagName 可以獲得標籤名稱、innerHTMlinnerText 可以獲得元素節點中的 HTML code 和文字內容... 等等,不過要注意的是這些 properties 只有 Element 類型的節點才有。
話不多說,現在就來看看有哪些常用的 element properties 吧!
以下面 HTMl 結構為例:

<body>
    <div><a>Go to google</a></div>
</body>
  • Element.tagName
    回傳該元素的標籤名稱。
    document.querySelector('div').tagName; // 'DIV'
    
  • Element.innerHTML
    回傳該元素內的所有 HTMl code。
    document.querySelector('div').innerHTML; // '<a>Go to google</a>'
    
  • Element.innerText
    回傳該元素內的文字內容。
    document.querySelector('div').innerText; // 'Go to google'
    
  • Element.outerHTML
    回傳該元素本身及其內部的所有 HTMl code。
    document.querySelector('div').outerHTML; // '<div><a>Go to google</a></div>'
    

上一篇:[快速入門前端 58] JavaScript:常見的內建函式 (2) Number 和 String 相關
下一篇:[快速入門前端 60] JavaScript:DOM (2) 如何獲取元素節點
系列文章列表:[快速入門前端] 系列文章索引列表


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言