JavaScript訪問樣式表代碼
技術(shù)關(guān)鍵點(diǎn):style。這一篇要求我們對(duì)CSS樣式有一定的了解。(讀者可以google一下CSS的相關(guān)內(nèi)容)
操作步驟:
1、頁面代碼(包括JS代碼)如下:
<!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>
<title>Style Example</title>
<style type="text/css">
div.special
{
background-color:Red;
height:50px;
width:50px;
}
</style>
<script type="text/javascript">
function getBackGroundColor() {
var oDiv = document.getElementById("div1");
alert(oDiv.style.backgroundColor);
}
</script>
</head>
<body>
<div id="div1" class="special"></div>
<input type="button" value="Get BackGround Color" onclick="getBackGroundColor();"/>
</body>
</html>
JS代碼中獲得了div對(duì)象,并輸出了div對(duì)象的背景顏色,一切看起來都那么完美,可是效果總是讓我們失望,如下:

這樣看來,JavaScript以這種方式去訪問CSS樣式無法達(dá)到效果,原因:CSS數(shù)據(jù)并非存儲(chǔ)在style屬性中,而是存儲(chǔ)在類中。所以接下來要做的:就是怎么樣去訪問CSS類?
2、幸運(yùn)的是,我們找到了document.styleSheets集合。document.styleSheets包含了html頁面中所有樣式表的引用和所有的<style>元素。
因?yàn)闉g覽器的不同,訪問樣式表中單獨(dú)的規(guī)則(規(guī)則:指定是CSS類,例如上面html代碼中的div.special)的方法是不同的。DOM為每一個(gè)樣式表指定一個(gè)cssRules的集合,但是IE卻把這個(gè)集合命名為rules。所以在獲取樣式集合之前,代碼需要做一個(gè)技巧性的改動(dòng):
每個(gè)規(guī)則都包含selectorText特性,div.special就是上面html中CSS規(guī)則的selectorText的值。規(guī)則還包含style屬性,這個(gè)時(shí)候就可以通過style屬性獲取背景顏色了。來看代碼吧:
function getBackGroundColor() {
var oCSSRules = document.styleSheets[0].cssRules || document.styleSheets[0].rules;
alert(oCSSRules[0].style.backgroundColor);
}
代碼效果:

3、這個(gè)時(shí)候,你可用通過修改樣式來改變背景顏色,但是最好不要這樣做,因?yàn)槟愀牡舻氖荂SS類,其他引用了改CSS類的元素也會(huì)改變背景顏色,所以如果需要修改樣式,做好直接修改單個(gè)元素的style屬性,比如:document.getElementById("div1").style.backgroundColor="Blue";
- javascript實(shí)現(xiàn)動(dòng)態(tài)加載CSS
- IE8中使用javascript動(dòng)態(tài)加載CSS的解決方法
- 動(dòng)態(tài)加載腳本提升javascript性能
- javascript:FF/Chrome與IE動(dòng)態(tài)加載元素的區(qū)別說明
- javascript如何動(dòng)態(tài)加載表格與動(dòng)態(tài)添加表格行
- javascript中動(dòng)態(tài)加載js文件多種解決辦法總結(jié)
- javascript 動(dòng)態(tài)修改樣式和層疊樣式表代碼
- JavaScript動(dòng)態(tài)加載樣式表的方法
相關(guān)文章
javascript自定義startWith()和endWith()的兩種方法
js中自定義startWith()和endWith()方法有兩種,在本文將為大家詳細(xì)介紹下,感興趣的朋友不要錯(cuò)過2013-11-11
Jquery實(shí)現(xiàn)的tab效果可以指定默認(rèn)顯示第幾頁
tab效果想必大家在網(wǎng)上都有見過很多吧,在本文將為大家介紹下如何實(shí)現(xiàn)可以在代碼里面指定默認(rèn)顯示第幾頁的tab效果,感興趣的朋友不要錯(cuò)過2013-10-10
JavaScript阻止事件冒泡和默認(rèn)行為的方法舉例
JavaScript事件的默認(rèn)行為指瀏覽器自動(dòng)執(zhí)行的操作,如鏈接跳轉(zhuǎn)或表單提交,阻止這些行為可以使用event.preventDefault()、return?false或event.returnValue屬性,event.stopPropagation()用于阻止事件傳播,不直接阻止默認(rèn)行為,需要的朋友可以參考下2024-10-10
JS獲取隨機(jī)數(shù)函數(shù)可自定義最小值最大值
這篇文章主要介紹的是一個(gè)JS獲取隨機(jī)數(shù)的函數(shù)可自定義最小值最大值,需要的朋友可以參考下2014-05-05
layui添加動(dòng)態(tài)菜單與選項(xiàng)卡 AJAX請(qǐng)求的例子
今天小編就為大家分享一篇layui添加動(dòng)態(tài)菜單與選項(xiàng)卡 AJAX請(qǐng)求的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-09-09
ionic由于使用了header和subheader導(dǎo)致被遮擋的問題的兩種解決方法
這篇文章主要介紹了ionic由于使用了header和subheader導(dǎo)致被遮擋的問題的兩種解決方法,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09
Flexigrid在IE下不顯示數(shù)據(jù)的有效處理方法
Flexigrid在IE下不顯示數(shù)據(jù)的處理方法是:指定一下Ajax請(qǐng)求數(shù)據(jù)的方式為Get方式,遇到此問題的朋友可以參考下2014-09-09
微信小程序頁面跳轉(zhuǎn)功能之從列表的item項(xiàng)跳轉(zhuǎn)到下一個(gè)頁面的方法
這篇文章主要介紹了微信小程序頁面跳轉(zhuǎn)功能之從列表的item項(xiàng)跳轉(zhuǎn)到下一個(gè)頁面的方法,結(jié)合具體實(shí)例形式總結(jié)分析了微信小程序頁面跳轉(zhuǎn)及列表item項(xiàng)跳轉(zhuǎn)頁面的相關(guān)操作技巧,需要的朋友可以參考下2017-11-11
Js setInterval與setTimeout(定時(shí)執(zhí)行與循環(huán)執(zhí)行)的代碼(可以傳入?yún)?shù))
最近在做項(xiàng)目時(shí)用到了定時(shí)執(zhí)行的js方法,setInterval與setTimeout時(shí)間長了不用有些生疏了,所以自己總結(jié)了一下,記下來,以便以后使用。2010-06-06

