※ 認識DOM(三)

更新 發佈閱讀 6 分鐘

※ 查找 DOM 元素有兩種途徑:

  • 直接選出一個節點 (select):要在樹狀結構裡查找資料,至少要先選出第一個元素。
  • 從一個特定節點,查找到週邊的節點 :選出一個元素後,就可以順著結構找出父元素、子元素 、甚至同一層的兄弟元素,這種行為稱為「遍歷 (traverse)」。

※ 選出特定 DOM 節點的語法 :

  • querySelector:搭配指定 CSS 選擇器選出一個元素節點,如果有很多個元素,則會直接回傳第一個找到的結果。

語法:element = document.querySelector(selector)

程式碼拆解:

  1. document:在文件裡尋找。
  2. querySelector:選取網頁上的元素。
  3. 參數selector:一個包含一個或多個 CSS 選擇器的字符串。
// 選取第一個 class 為 'example' 的 div 元素
const div = document.querySelector('div.example');

// 選取 id 為 'header' 的元素
const header = document.querySelector('#header');
  • querySelectorAll:搭配指定 CSS 選擇器選出很多元素,回傳一個類似陣列的 NodeList。
  1. 語法:nodeList = document.querySelectorAll(selector)
  2. 參數selector:一個包含一個或多個 CSS 選擇器的字符串。
// 選取所有 class 為 'example' 的 div 元素
const divs = document.querySelectorAll('div.example');

// 選取所有位於列表中的項目元素
const items = document.querySelectorAll('ul > li');


※ 修改 DOM 節點的語法 :

新增節點:

document.createElement(tagName):新增一個元素。

vocus|新世代的創作平台

用textContent 寫入文字資料:

在JS中宣告一個變數,把變數指向到DOM網頁元素位置去。直接選取變數來更改網頁文字內容、並重新賦予值。

//JS部分
const el = document.querySelector('h1');
el.textContent = "hello world"; //寫法較簡潔

修改元素的內容:

  • NODE.innerHTML = "修改元素的內容" : 會解析 HTML 標籤。
  • NODE.innerText = "修改元素的內容" : 不會解析 HTML 標籤(只處理文字)。
vocus|新世代的創作平台

將節點插入 DOM Tree:

元素建立之後,在瀏覽器上還看不到,需要透過 appendChild、insertBefore 或 replaceChild 等方法將新元素加入至指定的位置之後才會顯示。常用到的是 appendChild。

語法:NODE.appendChild(Node)

vocus|新世代的創作平台

刪除節點:

  • parentElement.removeChild(NODE)
  • NODE.remove()

※ DOM 元素可以調整那些內容:

※ 樣式:classList,className和style。

說明:

classList: 這是一個元素的類別屬性的集合,提供了添加、刪除和切換CSS類別的方法。

className: 這是一個表示元素class屬性的字符串。可以直接修改這個屬性來改變元素的類別。

style: 這個屬性允許直接在元素上設定行內樣式。

操作 CSS樣式:

  • NODE.classList : 查看目前所有 class 名稱,會回傳類似陣列的清單。
  • NODE.classList.add(className1, className2) : 加入一個或多個樣式。
  • NODE.classList.remove(className1, className2) : 刪除樣式。
  • NODE.className = className - 如果樣式只有一個,也可以直接寫入。

操作style 屬性:改變的是元素的視覺呈現(即CSS樣式),並不會改變HTML源代碼中的屬性值。

  • NODE.style.backgroundColor
  • NODE.style.borderStyle

※ 屬性:修改的是元素的HTML屬性。

屬性操作:

getAttribute()-得到屬性內容,setAttribute()-新增或修改屬性內容。

※ 內容:innerHTML-取得HTML,innerText-改變裡面的文字內容。

※ Javascript Even機制:

在DORM元素上新增一個監聽器,來偵測使用者的操作行為,接著監聽器收到訊號後會如何執行對應程式

執行程序:

  1. addEventListener:增加一個事件監聽器
  2. callback function
  3. capturing & bubbling

設置事件(Event Handler)

vocus|新世代的創作平台

設置事件時,需要考慮到幾個基本要件:

  • 觸發事件的 HTML 元素
  • 事件類型,如 click、submit、keyup....
  • 想要觸發的程式,會是一個函式,該函式會稱為事件處理器 (event handler)

事件監聽器(Event Listener)

vocus|新世代的創作平台
// listener
element.addEventListener('click', greeting)
// handler
function greeting() {
alert('handling event')
}

addEventListener 可以傳入三個參數:

  • 事件名稱 (event name),如 'click'
  • handler,要啟動的 function,也可以直接使用匿名函式
  • useCapture,切換 capturing 機制

常見事件種類:

滑鼠事件(mouse event)

  • click - 滑鼠點擊元素
  • mousemove - 滑鼠滑過元素
  • mouseout - 滑鼠離開元素

鍵盤事件(keyboard event)

  • keydown - 點擊且長按一個鍵時
  • keyup - 放開按鍵時

表單事件

  • submit - 提交表單時
  • focus - 點擊某個輸入框時
  • input - 輸入框內容改變時

other事件

  • 檔案讀取(document 事件)
  • 視窗變化相關的事件resize,scroll,load


留言
avatar-img
奧莉薇走在成為後端工程師之路上
27會員
171內容數
全端網頁開發專業知識分享
2025/04/26
※ 場景: 即時聊天應用: 設計一個支持多房間功能的即時聊天平台,像 WhatsApp、LINE或Facebook Messenger,提供文字、語音、視訊聊天功能,方便管理群組聊天。 功能亮點:加入特別功能,例如可加入多房間功能、使用者名單、表情符號支持、文件分享或訊息已讀未讀狀態。 展示
2025/04/26
※ 場景: 即時聊天應用: 設計一個支持多房間功能的即時聊天平台,像 WhatsApp、LINE或Facebook Messenger,提供文字、語音、視訊聊天功能,方便管理群組聊天。 功能亮點:加入特別功能,例如可加入多房間功能、使用者名單、表情符號支持、文件分享或訊息已讀未讀狀態。 展示
2025/04/26
※ 先建立基本的express後端服務: 1.建立新資料夾:Socket mkdir socket 2.進入資料夾:Socket cd ​bsocket 3. 安裝 Experss 到專案中 npm init -y //初始化專案,建立 package.json 檔 npm insta
Thumbnail
2025/04/26
※ 先建立基本的express後端服務: 1.建立新資料夾:Socket mkdir socket 2.進入資料夾:Socket cd ​bsocket 3. 安裝 Experss 到專案中 npm init -y //初始化專案,建立 package.json 檔 npm insta
Thumbnail
2025/04/10
※ 什麼是 Socket.io:一個基於傳統 WebSocket API 之上的框架。 ※ Socket.io常用功能: Custom Events:在 Socket.io 中,開發者可以創建自己的事件來處理特定的功能或需求。 Rooms:分組的功能。每個連接的用戶(或稱為 socket)可
Thumbnail
2025/04/10
※ 什麼是 Socket.io:一個基於傳統 WebSocket API 之上的框架。 ※ Socket.io常用功能: Custom Events:在 Socket.io 中,開發者可以創建自己的事件來處理特定的功能或需求。 Rooms:分組的功能。每個連接的用戶(或稱為 socket)可
Thumbnail
看更多
你可能也想看
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
給定一個字串陣列,請把它們所共有的字元伴隨著出現次數輸出。這篇文章介紹如何使用字典統計出現次數,和字典取交集的方法來解決此問題。並提供了複雜度分析和關鍵知識點。
Thumbnail
給定一個字串陣列,請把它們所共有的字元伴隨著出現次數輸出。這篇文章介紹如何使用字典統計出現次數,和字典取交集的方法來解決此問題。並提供了複雜度分析和關鍵知識點。
Thumbnail
自訂元件生成位置顧名思義就是可以指定部分HTML區塊渲染在特定的畫面上,即使在不同組件也能把A組件內的部分畫面,展現在B組件上,以下方程式舉例。
Thumbnail
自訂元件生成位置顧名思義就是可以指定部分HTML區塊渲染在特定的畫面上,即使在不同組件也能把A組件內的部分畫面,展現在B組件上,以下方程式舉例。
Thumbnail
資訊架構就像是網站的地圖,讓用戶快速找到所需的資訊。好的資訊架構可提升使用者滿意度、強化 SEO、增進擴充性、達成商業目標。資訊架構可透過使用者訪談、卡片分析、競品分析、使用者測試等方法設計。在設計資訊架構時,需考量用戶的認知方式、目標客群、資訊分類等因素。定期檢驗資訊架構,才能確保用戶體驗。
Thumbnail
資訊架構就像是網站的地圖,讓用戶快速找到所需的資訊。好的資訊架構可提升使用者滿意度、強化 SEO、增進擴充性、達成商業目標。資訊架構可透過使用者訪談、卡片分析、競品分析、使用者測試等方法設計。在設計資訊架構時,需考量用戶的認知方式、目標客群、資訊分類等因素。定期檢驗資訊架構,才能確保用戶體驗。
Thumbnail
題目敘述 All Ancestors of a Node in a Directed Acyclic Graph 給定一個有向無環圖,請找出每個點的祖先,以陣列的形式返回答案。
Thumbnail
題目敘述 All Ancestors of a Node in a Directed Acyclic Graph 給定一個有向無環圖,請找出每個點的祖先,以陣列的形式返回答案。
Thumbnail
在這個章節中,我們介紹了HTML的基本概念,包括其作為結構化標記語言的特性、應用領域,以及主要使用者。這些知識為後續的深入學習和實踐奠定了基礎,幫助讀者了解HTML在現代網頁開發中的重要性。
Thumbnail
在這個章節中,我們介紹了HTML的基本概念,包括其作為結構化標記語言的特性、應用領域,以及主要使用者。這些知識為後續的深入學習和實踐奠定了基礎,幫助讀者了解HTML在現代網頁開發中的重要性。
Thumbnail
HTML 標籤是網頁內容的基礎,透過學習不同的標籤,你可以設計出各式各樣的內容。本文介紹了各種基本的標籤,如標題、段落、修飾樣式、超連結以及區塊等,讓你對 HTML 標籤有更深入的瞭解。
Thumbnail
HTML 標籤是網頁內容的基礎,透過學習不同的標籤,你可以設計出各式各樣的內容。本文介紹了各種基本的標籤,如標題、段落、修飾樣式、超連結以及區塊等,讓你對 HTML 標籤有更深入的瞭解。
Thumbnail
希望透過條列和簡介,可以更方便讀者選讀自己偏好的主題。
Thumbnail
希望透過條列和簡介,可以更方便讀者選讀自己偏好的主題。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
三大步驟,讓你選系、就業、轉職或創業不再迷惘
Thumbnail
三大步驟,讓你選系、就業、轉職或創業不再迷惘
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News