原生js添加類名詳解

在web開發中,我們會經常用到給HTML元素添加類名的操作。原生的js提供了幾種方法可以完成該操作,本文將從多個角度詳細講解每種方法的用法和優缺點。

一、原生js添加類名的方法

原生js提供了以下幾種方法用於向HTML元素添加類名:

  • element.className
  • element.classList.add()
  • element.classList.toggle()
  • element.classList.remove()

接下來,我們將逐一講解每種方法的用法和優缺點。

二、element.className

element.className 是原生js添加類名的最基礎方法。它允許你向元素的classed屬性添加一個或多個類名。

以下是通過element.className向元素添加類名的示例代碼:

  
    var element = document.getElementById('myElement');
    element.className += ' myClass';
  

上述代碼將向id為 “myElement” 的元素添加 “myClass” 這個類名。需要注意的是,className屬性只能替換元素的全部類名,而無法只替換其中的某個類名。

當需要替換一個元素中的一個類名時,需要先通過 String 對象的 replace() 方法將原來的類名替換成新的類名。代碼示例如下:

  
    var element = document.getElementById('myElement');
    element.className = element.className.replace('oldClass', 'newClass');
  

上述代碼將替換 “myElement” 元素的 “oldClass” 類名為 “newClass” 類名。

雖然 element.className 是原生js添加類名的基礎方法,但是由於它只能替換元素的全部類名且語義化差,使用時應盡量避免。

三、element.classList.add()

element.classList.add() 方法可以向 HTML 元素的 class 屬性中添加一個或多個類名。

以下是通過element.classList.add()向元素添加類名的示例代碼:

  
    var element = document.getElementById('myElement');
    element.classList.add('myClass');
  

上述代碼將向id為 “myElement” 的元素添加 “myClass” 這個類名。注意,element.classList.add() 方法可以在元素中添加多個類名,可以將多個類名通過逗號分隔的形式添加到該方法中。

另外,element.classList.add() 方法還可以接受多個參數,每個參數都代表一個要添加的類名。代碼示例如下:

  
    var element = document.getElementById('myElement');
    element.classList.add('myClass1', 'myClass2', 'myClass3');
  

上述代碼將向id為 “myElement” 的元素分別添加 “myClass1″、”myClass2″、”myClass3” 這三個類名。

四、element.classList.toggle()

通過 element.classList.toggle() 方法可以為 HTML 元素的 class 屬性添加或刪除一個或多個類名。

以下是通過element.classList.toggle() 向元素添加或刪除類名的示例代碼:

  
    var element = document.getElementById('myElement');
    element.classList.toggle('myClass');
  

上述代碼將判斷id為 “myElement” 的元素是否包含 “myClass” 這個類名,如果元素沒有這個類名,就將這個類名添加到元素的class屬性中,如果元素已經存在這個類名,就將這個類名從元素的class屬性中移除。

另外,element.classList.toggle() 方法還可以接受第二個參數用於指定是否應該添加或移除類名,代碼示例如下:

  
    var element = document.getElementById('myElement');
    element.classList.toggle('myClass', true); // 添加類名
    element.classList.toggle('myClass', false); // 移除類名
  

五、element.classList.remove()

通過 element.classList.remove() 方法可以從 HTML 元素的 class 屬性中刪除一個或多個類名。

以下是通過element.classList.remove() 從元素中刪除類名的示例代碼:

  
    var element = document.getElementById('myElement');
    element.classList.remove('myClass');
  

上述代碼將從id為 “myElement” 的元素的 class 屬性中移除 “myClass” 這個類名。

與 element.classList.add() 方法一樣,element.classList.remove() 也可以接受多個參數,每個參數代表一個要從 HTML 元素的 class 屬性中移除的類名。代碼示例如下:

  
    var element = document.getElementById('myElement');
    element.classList.remove('myClass1', 'myClass2', 'myClass3');
  

上述代碼將從id為 “myElement” 的元素的 class 屬性中移除 “myClass1″、”myClass2″、”myClass3” 這三個類名。

六、總結

以上就是常用的四種原生js添加類名的方法,除了使用 element.className 的兼容性好一些外,其餘三種方法均已得到廣泛應用。

在實際開發中,建議首先選擇使用 element.classList.add() 方法,盡量避免使用 element.className 和 element.classList.remove() 方法。當需要在添加或刪除類名時進行判斷時,可以使用 element.classList.toggle() 方法。

原創文章,作者:PGFCI,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/370816.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
PGFCI的頭像PGFCI
上一篇 2025-04-22 01:14
下一篇 2025-04-22 01:14

相關推薦

  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • 解析js base64並轉成unit

    本文將從多個方面詳細介紹js中如何解析base64編碼並轉成unit格式。 一、base64編碼解析 在JavaScript中解析base64編碼可以使用atob()函數,它會將b…

    編程 2025-04-29
  • Node.js使用Body-Parser處理HTTP POST請求時,特殊字元無法返回的解決方法

    本文將解決Node.js使用Body-Parser處理HTTP POST請求時,特殊字元無法返回的問題。同時,給出一些相關示例代碼,以幫助讀者更好的理解並處理這個問題。 一、問題解…

    編程 2025-04-29
  • t3.js:一個全能的JavaScript動態文本替換工具

    t3.js是一個非常流行的JavaScript動態文本替換工具,它是一個輕量級庫,能夠很容易地實現文本內容的遞增、遞減、替換、切換以及其他各種操作。在本文中,我們將從多個方面探討t…

    編程 2025-04-28
  • JS圖片沿著SVG路徑移動實現方法

    本文將為大家詳細介紹如何使用JS實現圖片沿著SVG路徑移動的效果,包括路徑製作、路徑效果、以及實現代碼等內容。 一、路徑製作 路徑的製作,我們需要使用到SVG,SVG是可縮放矢量圖…

    編程 2025-04-27
  • 如何使用JS調用Python腳本

    本文將詳細介紹通過JS調用Python腳本的方法,包括使用Node.js、Python shell、child_process等三種方法,以及在Web應用中的應用。 一、使用Nod…

    編程 2025-04-27
  • 如何反混淆美團slider.js

    本文將從多個方面詳細闡述如何反混淆美團slider.js。在開始之前,需要明確的是,混淆是一種保護JavaScript代碼的方法,其目的是使代碼難以理解和修改。因此,在進行反混淆操…

    編程 2025-04-27
  • Python要學JS嗎?

    Python和JavaScript都是非常受歡迎的編程語言。然而,你可能會問,既然我已經學了Python,是不是也需要學一下JS呢?在本文中,我們將圍繞這個問題進行討論,並從多個角…

    編程 2025-04-27
  • 解決js ajax post 419問題

    對於使用ajax post請求時出現的419問題,我們需要進行以下幾個方面的闡述,包括返回碼的含義、可能出現的情況、解決方案等內容。 一、解析419返回碼 419返回碼錶示用戶超時…

    編程 2025-04-27
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁碟中。在執行sync之前,所有的文件系統更新將不會立即寫入磁碟,而是先緩存在內存…

    編程 2025-04-25

發表回復

登錄後才能評論