javascript通用獲取元素樣式屬性值程式碼例項

antzone發表於2017-04-04

本章節分享一段程式碼例項,它實現了具有通用效果的獲取元素指定樣式屬性值的功能。無論是使用ele.style.attr方式定義的屬性還是樣式表定義的屬性,都可以獲取。

程式碼例項如下:

[HTML] 純文字檢視 複製程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
#antzone{
  width:200px;
  height:100px;
  background-color:#ccc;
  text-align:center;
  line-height:100px;
}
</style>
<script type="text/javascript">
function getStyle(elem, name) {
  if (elem.style[name]) {
    return elem.style[name];
  }
  else if (elem.currentStyle) {
    return elem.currentStyle[name];
  }
  else if(document.defaultView && document.defaultView.getComputedStyle){
    name = name.replace(/([A-Z])/g, "-$1");
    name = name.toLowerCase();
    var s = document.defaultView.getComputedStyle(elem, "");
    return s && s.getPropertyValue(name);
  }
  else {
    return null;
  }
}
window.onload=function(){
  var odiv=document.getElementById("antzone");
  odiv.innerHTML=getStyle(odiv,"backgroundColor");
}
</script>
</head>
<body>
<div id="antzone"></div>
</body>
</html>

上面的程式碼實現了我們的要求,下面介紹一下它的實現過程。

一.程式碼註釋:

(1).function getStyle(elem, name) {},此方法實現了獲取功能,第一個引數元素物件,第二個引數是屬性的名稱,符合屬性支援類似"backgroundColor"和"background-color"兩種形式。

(2).if (elem.style[name]) {

  return elem.style[name];

},如果是屬性是使用style定義的,那麼就使用此種方式獲取。

(3).else if (elem.currentStyle) {

  return elem.currentStyle[name];

},此方式是針對IE8和IE8以下瀏覽器。

(4). else if(document.defaultView && document.defaultView.getComputedStyle),針對標準瀏覽器。

(5).name = name.replace(/([A-Z])/g, "-$1")此程式碼就是為了將backgroundColor形式轉換為background-color。

(6).name = name.toLowerCase(),轉換為小寫形式。

(7).var s = document.defaultView.getComputedStyle(elem, ""),獲取元素的css樣式物件。

(8).return s && s.getPropertyValue(name),獲取指定名稱的屬性值。

二.相關閱讀:

(1).currentStyle可以參閱getComputedStyle()和currentStyle屬性的一章節。

(2).replace()方法可以參閱正規表示式replace()一章節。

相關文章