Skip to content

[WebAPIs] 淺談 JavaScript DOM Manipulation (2): 建立與新增

· 4 min

上一篇文章提到,選取 DOM 元素後,可以做許多操作,這篇想談談如何在選取元素後,以該元素為基礎新增 DOM 元素。

因目前工作會需要操作網頁的 Google 廣告單元,就是新聞網或各種網誌中,以各種方式出現的令人煩躁的廣告😂,各種方式例如:出現在網頁底部(錨底廣告)、佔滿螢幕畫面(蓋板廣告)或是出現在文章段落中間。
如果我們要讓廣告出現,會需要先選取現有網站的 DOM 元素,再以此為基準去新增 DOM 元素,並在該元素內放入廣告內容。
除此之外,React 也是抓取網頁根元素,再將網頁內容渲染進根元素內,所以新增、修改 DOM 元素在網頁應用十分重要🙌

以下列出我目前常用的方法:

1. 建立元素與相關屬性#

2. 將元素加入現有 DOM element#

<ul>
<li></li>
<li></li>
<! - appendChild 新增的元素 -->
</ul>

文字說明可能不清楚,簡單做了一張示意圖解釋這些方法的差異:

實作案例#

學會這些方法後,來試著實作看看吧!
如果現在有個網頁長這樣:

假設現在想在文章第二段下方新增一個"Hello! this is my insert element!"的區塊,可分為三個步驟:

  1. 選取目標元素的 DOM element:
    const targetEl = document.querySelectorAll(‘p’)[1];
  2. 創建要新增的 DOM element (這裡有用我另外載入的 tailwindcss 樣式)
    const newEl = document.createElement('p');
    newEl.innerText = "Hello! this is my insert element!";
    newEl.className = "text-white text-center bg-black p-2";
  3. 將新元素插入到目標元素下方
    targetEl.after(newEl);

就可看到元素被插入成功囉!

也可右鍵檢查目前網頁結構,來確認元素是否有如預期地插入:

完整程式碼連結請見 CodePen


Reference:#

如有任何問題歡迎聯絡、不吝指教✍️