1. 程式人生 > >使用原生獲取DOM元素的樣式

使用原生獲取DOM元素的樣式

我們在日常的工作場景下會遇到需要修改頁面元素的樣式問題,特別是使用原生js獲取元素的樣式,如果只是獲取在元素的內聯樣式,可以通過Element.getAttribute(attr)來獲取元素的屬性,但是如果獲取的是DOM元素的css樣式表哪?
這也是有辦法的我們可以通過[getComputedStyle]進行獲取,具體的可以點選這裡 來看。
為了保持相容性(ie)我們還要使用currentStyle物件進行相容。我們可以使用以下的方式來獲取這樣的屬性值

            	function getElemStyle (elem, attr) {
            		// 保證elem是dom節點
            		if (!elem || !elem.nodeType || elem.nodeType !== 1) {
            			return;
            		}
            		if (document.currentStyle) {
            			return elem.currentStyle[attr];
            		} else {
            			return window.getComputedStyle(elem, null)[attr];
            		}
            	}
          

但是,這並不是最優的方式。我們知道我們的DOM操作方法上的繼承自HTMLElement,而HTMLElement繼承自Element,所以我們可以直接在Element上加方法。這樣做的好處是,我們可以再任何地方隨時的使用這個方法,不必每次獲取元素再呼叫上面的方法。我的程式碼如下所示:

function getElemStyle() {
    Element.prototype.getStyle = function(attr) {
        if (this.currentStyle) {
            return this.currentStyle[attr];
        } else {
            return window.getComputedStyle(this, null)[attr];
        }
    }
}

這需要執行一次這個程式碼,當前頁面的所有DOM元素都可使用這個物件。