获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)


Posted in Javascript onFebruary 14, 2011

可是DOM.style这种写法只能访问<DOM style=""></DOM>,这样在标签里内置的样式,如果样式写在<style type="text/css"></style>,或者.css文件里,那么就办法读到样式了。

其实呢,还有别的方法可以读到这些样式信息,方法有两种,一种是通过document.styleSheets对象,另一种是通过“最终样式”对象。其中 IE中这个对象叫做currentStyle,FF中这个对象叫做document.defaultView。我将这两个类打包了一下,做了一个用于访问 样式信息的函数,如下:

//===========================访问样式表函数==================================== 
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); 
} 
}

函数有两个参数:

obj:访问的对象,类型为DOM对象,或者是对象的id;

styleName: 需要访问的样式名称。类型为string,但是名称不能用"-"号,要用像style.对象的属性名一样的大小写混写名称,例如background-color要写成backgroundColor。

函数返回值为 string类型。

注意:这个方法只能访问样式文件,不能写。如果要写样式,还是要用DOM.style.XXX的方法。另外,FF下有些样式访问有问题,例如padding,margin。如果样式中设置了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">这里是测试内容</div> 
<br /><br /> 
<a href="###" onclick="alert(returnStyle('demo','width'));">点击测试</a> 
</body> 
</html>

===========================
function getStyle( elem, name ) { 
//如果该属性存在于style[]中,则它最近被设置过(且就是当前的) 
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) { 
//它使用传统的"text-Align"风格的规则书写方式,而不是"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; 
}
Javascript 相关文章推荐
jQuery 技巧小结
Apr 02 Javascript
读jQuery之十二 删除事件核心方法
Jul 31 Javascript
js播放wav文件(源码)
Apr 22 Javascript
jQuery固定元素插件scrolltofixed使用指南
Apr 21 Javascript
jQuery匹配文档链接并添加class的方法
Jun 26 Javascript
AngularJS中的按需加载ocLazyLoad示例
Jan 11 Javascript
canvas绘制表盘时钟
Jan 23 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
Mar 09 Javascript
JavaScript用二分法查找数据的实例代码
Jun 17 Javascript
史上最全JavaScript数组去重的十种方法(推荐)
Aug 17 Javascript
Angular4.0动画操作实例详解
May 10 Javascript
vue使用swiper实现左右滑动切换图片
Oct 16 Javascript
JavaScript与Image加载事件(onload)、加载状态(complete)
Feb 14 #Javascript
JQuery 选择器、过滤器介绍
Feb 14 #Javascript
AJAX分页的代码(后台asp.net)
Feb 14 #Javascript
基于jquery的图片的切换(以数字的形式)
Feb 14 #Javascript
jquery isType() 类型判断代码
Feb 14 #Javascript
jquery isEmptyObject判断是否为空对象的函数
Feb 14 #Javascript
jquery each()源代码
Feb 14 #Javascript
You might like
分页显示Oracle数据库记录的类之一
2006/10/09 PHP
PHP将整个网站生成HTML纯静态网页的方法总结
2012/02/05 PHP
php使用json_encode对变量json编码
2014/04/07 PHP
php基于openssl的rsa加密解密示例
2016/07/11 PHP
24条货真价实的PHP代码优化技巧
2016/07/28 PHP
linux mint下安装phpstorm2020包括JDK部分的教程详解
2020/09/17 PHP
跟我学Node.js(四)---Node.js的模块载入方式与机制
2014/06/04 Javascript
JavaScript中的类数组对象介绍
2014/12/30 Javascript
Javascript动态创建div的方法
2015/02/09 Javascript
node.js express安装及示例网站搭建方法(分享)
2016/08/22 Javascript
JS中的作用域链
2017/03/01 Javascript
使用JavaScriptCore实现OC和JS交互详解
2017/03/28 Javascript
微信小程序自定义tab实现多层tab嵌套功能
2018/06/15 Javascript
angular6.0开发教程之如何安装angular6.0框架
2018/06/29 Javascript
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
2019/05/27 jQuery
JavaScript函数IIFE使用详解
2019/10/21 Javascript
JS pushlet XMLAdapter适配器用法案例解析
2020/10/16 Javascript
[02:28]DOTA2亚洲邀请赛附加赛 RECAP赛事回顾
2015/01/29 DOTA
详解Golang 与python中的字符串反转
2017/07/21 Python
Python+selenium实现截图图片并保存截取的图片
2018/01/05 Python
python将文本中的空格替换为换行的方法
2018/03/19 Python
详解Python的hasattr() getattr() setattr() 函数使用方法
2018/07/09 Python
使用python对文件中的数值进行累加的实例
2018/11/28 Python
python文字转语音的实例代码分析
2019/11/12 Python
python3检查字典传入函数键是否齐全的实例
2020/06/05 Python
Python利用pip安装tar.gz格式的离线资源包
2020/09/14 Python
利用Opencv实现图片的油画特效实例
2021/02/28 Python
新奇的小玩意:IWOOT
2016/07/21 全球购物
双十佳事迹材料
2014/01/29 职场文书
执行总经理岗位职责
2014/02/03 职场文书
补充协议书范本
2014/04/23 职场文书
红色故事演讲稿
2014/05/22 职场文书
纪念九一八爱国演讲稿600字
2014/09/14 职场文书
婚礼新人答谢词
2015/01/04 职场文书
年会邀请函的格式及范文五篇
2019/11/02 职场文书
【D4DJ】美少女DJ企划 动画将于明年冬季开播第2季
2022/04/11 日漫