JavaScript高階DOM操作技巧


在 Web 開發的世界中,動態且互動式的網頁對於吸引使用者並提供無縫的瀏覽體驗至關重要。JavaScript 作為一種強大的指令碼語言,在操作文件物件模型 (DOM) 以動態建立、修改和刪除 HTML 元素方面發揮著至關重要的作用。

在本文中,我們將探討使用 JavaScript 的高階 DOM 操作技巧,使您能夠將 Web 開發技能提升到一個新的水平。我們將涵蓋實際示例並提供充足的理論,幫助您徹底理解這些概念。

瞭解 DOM

在深入研究高階技巧之前,讓我們簡要回顧一下 DOM 的基礎知識。DOM 將 HTML 文件的結構表示為樹狀結構,其中每個 HTML 元素都是一個節點。JavaScript 允許我們與這種樹狀結構互動,提供用於操作節點及其屬性的方法和屬性。

在我們繼續學習 DOM 操作的不同高階技巧之前,讓我們先探索一個基本的示例,我們將在這個示例的基礎上使用下面提供的不同示例。

示例

<!DOCTYPE html>
<html>
<head>
   <title>Advanced DOM Manipulation Techniques</title>
   <style>
      button {
        padding: 10px;
        margin-top: 10px;
      }
   </style>
</head>  
<body>
   <div id="container">
      <!-- Existing content -->
   </div>
   <button id="myButton">Click Me!</button>
   <p id="target">
      <a href="www.google.com"> Element </a>
   </p>
   <p id="paragraphToRemove">To Remove this paragraph.</p>
   <button id="removeButton">Remove Paragraph</button>
	
   <script>	
      // Creating and Appending Elements
      const container = document.getElementById("container");
      const newParagraph = document.createElement("p");
      newParagraph.textContent = "This is a dynamically created paragraph.";
      container.appendChild(newParagraph);
	  
      // Modifying Element Attributes
      const button = document.getElementById("myButton");
      button.addEventListener("click", function() {
        button.style.backgroundColor = "red";
      });
	  
      // paragraph to remove
      const removeButton = document.getElementById("removeButton");
      const paragraphToRemove = document.getElementById("paragraphToRemove");
      removeButton.addEventListener("click", function() {
        paragraphToRemove.remove();
      });
	  
      // customising link behaviour
      const link = document.querySelector("#target a");
      link.addEventListener("click", function(event) {
        event.preventDefault();
        alert("You clicked the link!");
      });
	  
      // traversing the DOM
      const targetElement = document.getElementById("target");
      const nextSibling = targetElement.nextSibling;
      if (nextSibling) {
        nextSibling.style.color = "blue";
      }	  
   </script>
</body>
</html>

解釋

在這個 HTML 頁面中,我們有一個帶有 ID "container" 的容器,我們將在其中追加一個動態建立的段落元素。我們還有一個帶有 ID "myButton" 的按鈕,當單擊該按鈕時,它的背景顏色會發生變化。此外,還有一個帶有 ID "target" 的段落元素,我們將遍歷它以找到它的下一個同級元素並修改其文字顏色。最後,還有一個帶有 ID "removeButton" 的按鈕,當單擊該按鈕時,它會刪除特定的段落元素。

現在,在我們繼續學習我們將探索不同 DOM 操作技巧的示例之前,我們需要確保將下面要點中顯示的所有程式碼都放入 scripts.js 檔案中,然後再次執行 index.html 檔案。

建立和追加元素

要動態地在 DOM 中建立元素,JavaScript 提供了 createElement 方法。

讓我們考慮一個示例,我們希望建立一個新的段落元素並將其追加到現有的容器 div 中

const container = document.getElementById("container");
const newParagraph = document.createElement("p");
newParagraph.textContent = "This is a dynamically created paragraph.";
container.appendChild(newParagraph);

解釋

在上面的程式碼片段中,我們首先使用 getElementById 獲取對容器 div 的引用。然後,我們使用 createElement 建立一個新的段落元素,並使用 textContent 屬性為其分配一些文字內容。最後,我們使用 appendChild 將新的段落追加到容器中。

修改元素屬性

JavaScript 還允許我們修改 DOM 元素的各種屬性。

讓我們考慮一個示例,我們希望在單擊按鈕時更改其背景顏色

const button = document.getElementById("myButton");
button.addEventListener("click", function() {
   button.style.backgroundColor = "red";
});

解釋

在上面的程式碼片段中,我們使用 getElementById 獲取對按鈕元素的引用。然後,我們向按鈕新增一個事件偵聽器,該偵聽器在單擊按鈕時觸發。在事件偵聽器函式內部,我們修改按鈕的 backgroundColor 樣式屬性以將其背景顏色更改為紅色。

遍歷 DOM

遍歷 DOM 允許我們在不同的節點之間移動並訪問它們的屬性或操作它們。JavaScript 為 DOM 遍歷提供了各種方法,例如 parentNode、nextSibling、previousSibling 等。

讓我們考慮一個示例,我們希望找到特定元素的下一個同級元素並更改其文字顏色 -

const targetElement = document.getElementById("target");
const nextSibling = targetElement.nextSibling;

if (nextSibling) {
   nextSibling.style.color = "blue";
}

解釋

在上面的程式碼片段中,我們首先使用 getElementById 獲取對目標元素的引用。然後,我們使用 nextSibling 屬性獲取目標元素的下一個同級元素。如果存在下一個同級元素,我們將修改其 color 樣式屬性以將其文字顏色設定為藍色。

刪除元素

JavaScript 提供了 remove 方法來從 DOM 中刪除元素。

讓我們考慮一個示例,我們希望在單擊按鈕時刪除特定的段落元素

const button = document.getElementById("removeButton");
const paragraphToRemove = document.getElementById("paragraphToRemove");

button.addEventListener("click", function() {
   paragraphToRemove.remove();
});

解釋

在上面的程式碼片段中,我們使用 getElementById 獲取對要刪除的按鈕和段落元素的引用。然後,我們向按鈕新增一個事件偵聽器,該偵聽器在單擊按鈕時觸發。在事件偵聽器函式內部,我們對段落元素呼叫 remove 方法以將其從 DOM 中刪除。

使用事件偵聽器自定義連結行為

請考慮以下所示的程式碼。

const link = document.querySelector("#target a");

link.addEventListener("click", function(event) {
   event.preventDefault();
   alert("You clicked the link!");
});

解釋

我們透過向錨元素新增事件偵聽器來自定義連結行為。透過使用 event.preventDefault() 阻止預設導航行為,並改為執行您所需的任何操作,例如顯示警報或以程式設計方式導航。

結論

在本文中,我們深入探討了使用 JavaScript 進行高階 DOM 操作技巧的迷人世界。我們介紹了一系列強大的工具和方法,使 Web 開發人員能夠建立動態且互動式的網頁,從而吸引使用者。

透過掌握這些技巧,您將能夠動態地建立和追加元素到 DOM、修改其屬性、遍歷 DOM 樹以查詢特定元素,甚至在必要時刪除元素。這些技能為建立引人入勝的使用者介面和提供無縫的瀏覽體驗開闢了全新的可能性。

要真正掌握這些概念,獲得實踐經驗至關重要。嘗試提供的程式碼示例,將其應用到您自己的專案中,並探索其他 DOM 方法和屬性。

更新於: 2023年7月24日

782 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告