獲取css樣式表內(nèi)樣式的js函數(shù)currentStyle(IE),defaultView(FF)
更新時間:2011年02月14日 22:29:53 作者:
JS從樣式表取值的函數(shù),IE中以currentStyle,firefox中defaultView來獲取,需要的朋友可以參考下。
可是DOM.style這種寫法只能訪問<DOM style=""></DOM>,這樣在標(biāo)簽里內(nèi)置的樣式,如果樣式寫在<style type="text/css"></style>,或者.css文件里,那么就辦法讀到樣式了。
其實呢,還有別的方法可以讀到這些樣式信息,方法有兩種,一種是通過document.styleSheets對象,另一種是通過“最終樣式”對象。其中 IE中這個對象叫做currentStyle,FF中這個對象叫做document.defaultView。我將這兩個類打包了一下,做了一個用于訪問 樣式信息的函數(shù),如下:
//===========================訪問樣式表函數(shù)====================================
function returnStyle(obj,styleName){
var myObj = typeof obj == "string" ? document.getElementById(obj) : obj;
if(document.all){
return eval("myObj.currentStyle." + styleName);
} else {
return eval("document.defaultView.getComputedStyle(myObj,null)." + styleName);
}
}
函數(shù)有兩個參數(shù):
obj:訪問的對象,類型為DOM對象,或者是對象的id;
styleName: 需要訪問的樣式名稱。類型為string,但是名稱不能用"-"號,要用像style.對象的屬性名一樣的大小寫混寫名稱,例如background-color要寫成backgroundColor。
函數(shù)返回值為 string類型。
注意:這個方法只能訪問樣式文件,不能寫。如果要寫樣式,還是要用DOM.style.XXX的方法。另外,F(xiàn)F下有些樣式訪問有問題,例如padding,margin。如果樣式中設(shè)置了padding,margin等值,我們可以用marginLeft來返回值。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
#demo{background-color:#000;padding:10px;color:#fff;width:200px;}
</style>
<script type="text/javascript">
//===========================訪問樣式表====================================
function returnStyle(obj,styleName){
var myObj = typeof obj == "string" ? document.getElementById(obj) : obj;
if(document.all){
return eval("myObj.currentStyle." + styleName);
} else {
return eval("document.defaultView.getComputedStyle(myObj,null)." + styleName);
}
}
</script>
<title></title>
</head>
<body>
<div id="demo">這里是測試內(nèi)容</div>
<br /><br />
<a href="###" onclick="alert(returnStyle('demo','width'));">點擊測試</a>
</body>
</html>
===========================
function getStyle( elem, name ) {
//如果該屬性存在于style[]中,則它最近被設(shè)置過(且就是當(dāng)前的)
if (elem.style[name])
return elem.style[name];
//否則,嘗試IE的方式
else if (elem.currentStyle)
return elem.currentStyle[name];
//或者W3C的方法,如果存在的話
else if (document.defaultView && document.defaultView.getComputedStyle) {
//它使用傳統(tǒng)的"text-Align"風(fēng)格的規(guī)則書寫方式,而不是"textAlign"
name = name.replace(/([A-Z])/g,"-$1");
name = name.toLowerCase();
//獲取style對象并取得屬性的值(如果存在的話)
var s = document.defaultView.getComputedStyle(elem,"");
return s && s.getPropertyValue(name);
//否則,就是在使用其它的瀏覽器
} else
return null;
}
其實呢,還有別的方法可以讀到這些樣式信息,方法有兩種,一種是通過document.styleSheets對象,另一種是通過“最終樣式”對象。其中 IE中這個對象叫做currentStyle,FF中這個對象叫做document.defaultView。我將這兩個類打包了一下,做了一個用于訪問 樣式信息的函數(shù),如下:
復(fù)制代碼 代碼如下:
//===========================訪問樣式表函數(shù)====================================
function returnStyle(obj,styleName){
var myObj = typeof obj == "string" ? document.getElementById(obj) : obj;
if(document.all){
return eval("myObj.currentStyle." + styleName);
} else {
return eval("document.defaultView.getComputedStyle(myObj,null)." + styleName);
}
}
函數(shù)有兩個參數(shù):
obj:訪問的對象,類型為DOM對象,或者是對象的id;
styleName: 需要訪問的樣式名稱。類型為string,但是名稱不能用"-"號,要用像style.對象的屬性名一樣的大小寫混寫名稱,例如background-color要寫成backgroundColor。
函數(shù)返回值為 string類型。
注意:這個方法只能訪問樣式文件,不能寫。如果要寫樣式,還是要用DOM.style.XXX的方法。另外,F(xiàn)F下有些樣式訪問有問題,例如padding,margin。如果樣式中設(shè)置了padding,margin等值,我們可以用marginLeft來返回值。
復(fù)制代碼 代碼如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
#demo{background-color:#000;padding:10px;color:#fff;width:200px;}
</style>
<script type="text/javascript">
//===========================訪問樣式表====================================
function returnStyle(obj,styleName){
var myObj = typeof obj == "string" ? document.getElementById(obj) : obj;
if(document.all){
return eval("myObj.currentStyle." + styleName);
} else {
return eval("document.defaultView.getComputedStyle(myObj,null)." + styleName);
}
}
</script>
<title></title>
</head>
<body>
<div id="demo">這里是測試內(nèi)容</div>
<br /><br />
<a href="###" onclick="alert(returnStyle('demo','width'));">點擊測試</a>
</body>
</html>
===========================
復(fù)制代碼 代碼如下:
function getStyle( elem, name ) {
//如果該屬性存在于style[]中,則它最近被設(shè)置過(且就是當(dāng)前的)
if (elem.style[name])
return elem.style[name];
//否則,嘗試IE的方式
else if (elem.currentStyle)
return elem.currentStyle[name];
//或者W3C的方法,如果存在的話
else if (document.defaultView && document.defaultView.getComputedStyle) {
//它使用傳統(tǒng)的"text-Align"風(fēng)格的規(guī)則書寫方式,而不是"textAlign"
name = name.replace(/([A-Z])/g,"-$1");
name = name.toLowerCase();
//獲取style對象并取得屬性的值(如果存在的話)
var s = document.defaultView.getComputedStyle(elem,"");
return s && s.getPropertyValue(name);
//否則,就是在使用其它的瀏覽器
} else
return null;
}
相關(guān)文章
ES6中Set和Map數(shù)據(jù)結(jié)構(gòu)的簡單講解
大家心里是否產(chǎn)生過這樣的疑問,JS中既然已經(jīng)有對象這種數(shù)據(jù)結(jié)構(gòu),我們?yōu)槭裁催€要再單獨去使用Set或者M(jìn)ap呢?下面這篇文章主要給大家介紹了關(guān)于ES6中Set和Map數(shù)據(jù)結(jié)構(gòu)的相關(guān)資料,需要的朋友可以參考下2022-08-08Bootbox將后臺JSON數(shù)據(jù)填充Form表單的實例代碼
通過控制器創(chuàng)建一個Index視圖,寫入下列HTML代碼,這里我創(chuàng)建了一個分部視圖,不創(chuàng)建直接寫在同一個頁面也是一樣的效果。這篇文章主要介紹了Bootbox將后臺JSON數(shù)據(jù)填充Form表單 ,需要的朋友可以參考下2018-09-09

JavaScript?ES6模塊導(dǎo)入和導(dǎo)出的方法
ES6在語言標(biāo)準(zhǔn)的層面上實現(xiàn)了模塊功能,而且實現(xiàn)的相當(dāng)簡單,完全可以取代CommonJS和AMD規(guī)范,成為瀏覽器和服務(wù)器通用的模塊解決方案,下面這篇文章主要給大家介紹了關(guān)于ES6模塊導(dǎo)入和導(dǎo)出的方法,需要的朋友可以參考下
2022-07-07