1. 程式人生 > >className 與 classList 的區別 / setAttribute和add的區別

className 與 classList 的區別 / setAttribute和add的區別

className 與 classList 的區別
1,所有瀏覽器都支援className屬性
classList是HTML5新增,對IE瀏覽器並不友好,IE10+與其他主流瀏覽器支援此屬性。
2,className屬性返回值是一個字串,內容就是HTML元素的class屬性內容。
classList屬性返回一個包含指定元素所有樣式類的集合物件。
3,.className的返回值就是包含元素class屬性值的字串。
.classList返回值是DOMTokenList型別集合,通過此集合可以非常便利的操作元素class屬性。
通過className操作class屬性,本質是對字串的操作,比如判斷class是否具有樣式類"b"。
那麼需要自己寫程式碼,將返回的字串分解為各個樣式類,然後再進行判斷,相對比較麻煩。
如果利用classList屬性,那麼將是非常輕鬆愉快的事情,使用DOMTokenList集合的contains方法即可實現。
利用classList返回的集合物件,只需要一個contains方法即可。
集合還具有其他方法,分別如下:
(1).add():新增樣式類。
(2).item():返回指定索引的樣式類。
(3).remove():刪除指定樣式類。
(4).toggle():切換樣式類

setAttribute和add的區別
setAttribute用於建立或改變某個新屬性。
如果指定屬性已經存在,則只設置該值並且會替換原來的值。
add方法是新增某個類,不會替換屬性中的值,並且需要跟classList使用,因為它是classList的方法。