我們經常在專案中會需要對某個區塊內是否含有特定 class 做檢查與操作,今天就簡單的來整理一些方法。
如何透過 javascript 檢查元素中是否含有某個 class ?
可以使用 JavaScript 的 classList
屬性來檢查元素中是否含有某個 class。
範例:
這段 HTML 定義了一個 id 為 “myParent” 的 div 元素,裡面有三個 div 元素,其中前兩個 div 元素有 class “myClass”,後一個沒有。
當你執行上面的 JavaScript 程式碼時,結果應該會顯示 “The parent element has at least one descendant with the class ‘myClass’”。
上述程式碼沒有印出任何東西
如果沒有印出任何東西,可能是 JavaScript 程式碼執行的時間點和 HTML 網頁載入的時間點不同造成的。有幾種解決方法:
- 使用 JavaScript 的
onload
事件,在頁面完全載入後再執行程式碼。
2.使用 jQuery 的 $(document).ready()
方法,在頁面完全載入後再執行程式碼。
那如何把含有 myClass 的元素加上黃色背景呢?
可以使用 JavaScript 的 classList.add()
方法來加上 class,並在 CSS 中定義 "myClass" class 的樣式。
範例:
這段程式碼會先使用 querySelectorAll()
方法找到所有含有 class "myClass" 的元素,再使用迴圈一一加上 class "yellow-bg"。在這個例子中 CSS 中的 .yellow-bg class 就會改變背景顏色。
注意,如果 HTML 中的元素已經有了背景顏色的樣式,那麼加上新的 class 樣式可能不會生效,因為後定義的樣式會被先定義的樣式覆蓋。
點擊得到的元素內如果含有 myClass 就把點擊到的元素移除寫法
可以在事件處理函數中使用 JavaScript 的 classList.remove()
方法來移除 class。
範例:
這段程式碼會在每個元素上綁定 “click” 事件,當元素被點擊時,會檢查這個元素是否含有 class “myClass”。如果有,則會使用 classList.remove()
方法移除 class。
另外,建議您可以把 CSS 的樣式放置在 class 上,而不是在 JavaScript 中修改樣式。這樣可以使程式碼更簡潔且更易於維護。
以上如果有更好的寫法,也歡迎留言或私訊進行交流喔。