1. 程式人生 > >設置className的方式(不使用setAttribute)

設置className的方式(不使用setAttribute)

其他 safari 原因 api 調用 bsp 答案 opera 樣式

   我們通過Js腳本對DOM 節點進行修改其樣式class的時候,常常是使用如下的方式進行操作:

element.className = ‘xxxClass‘;

而我們知道,element中有一個設置屬性值的API——setAttribute(propertyName, propertyValue);那麽我們會想,是否可以通過調用該API進行設置元素的樣式class呢?答案是肯定的,代碼如下:

element.setAttribute(‘className‘, ‘xxxClass‘);

但通過在IE,FireFox,Chrome,safari,Opera等瀏覽器測試中發現,第二種設置樣式class的方法,只能在IE下生效,而其他W3C標準的瀏覽器是無效的。

但通過改成另外一種方式,則在W3C下是生效的,但在IE下是無效的:

element.setAttribute(‘class‘, ‘xxxClass‘);

從上面的結論中,我們可以看出,如果要使用setAttribute方法對元素節點進行設置樣式class,則必須針對IE和其他W3C標準的瀏覽器分別設置class和className的屬性名,但使用下面的快捷方式,則在各個瀏覽器中均有效:

element.className = ‘xxxClass‘;

這就是為什麽我們需要直接使用className進行設置的原因。

設置className的方式(不使用setAttribute)