获取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的强大选择器小结
Dec 27 Javascript
javascript 使用 NodeList需要注意的问题
Mar 04 Javascript
JS和Jquery获取和修改label的值的示例代码
Jan 15 Javascript
javascript版2048小游戏
Mar 18 Javascript
jquery序列化方法实例分析
Jun 10 Javascript
浅谈JavaScript 的执行顺序
Aug 07 Javascript
jQuery过滤选择器经典应用
Aug 18 Javascript
Boostrap实现的登录界面实例代码
Oct 09 Javascript
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
May 09 jQuery
javascript 高级语法之继承的基本使用方法示例
Nov 11 Javascript
Vue页面切换和a链接的本质区别详解
Nov 12 Javascript
理解JavaScript中的对象
Aug 25 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
Session保存到数据库的php类分享
2011/10/24 PHP
php中设置index.php文件为只读的方法
2013/02/06 PHP
wamp下修改mysql访问密码的解决方法
2013/05/07 PHP
Yii2语言国际化的配置教程
2018/08/19 PHP
php中字符串和整数比较的操作方法
2019/06/06 PHP
禁止直接访问php文件代码分享
2020/05/05 PHP
获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)
2011/02/14 Javascript
基于jquery实现的鼠标滑过按钮改变背景图片
2011/07/15 Javascript
写自已的js类库需要的核心代码
2012/07/16 Javascript
js 关键词高亮(根据ID/tag高亮关键字)案例介绍
2013/01/21 Javascript
跟我学Nodejs(二)--- Node.js事件模块
2014/05/21 NodeJs
jQuery搜索框效果实现代码(百度关键词联想)
2021/02/25 Javascript
JS基于递归算法实现1,2,3,4,5,6,7,8,9倒序放入数组中的方法
2017/01/03 Javascript
angularjs实现时间轴效果的示例代码
2017/11/29 Javascript
Node.js使用cookie保持登录的方法
2018/05/11 Javascript
angular将html代码输出为内容的实例
2018/09/30 Javascript
Node.js中package.json中库的版本号(~和^)
2019/04/02 Javascript
JS实现audio音频剪裁剪切复制播放与上传(步骤详解)
2020/07/28 Javascript
Nuxt pages下不同的页面对应layout下的页面布局操作
2020/11/05 Javascript
Python中bisect的用法
2014/09/23 Python
Linux环境下MySQL-python安装过程分享
2015/02/02 Python
深入学习python的yield和generator
2016/03/10 Python
通过Py2exe将自己的python程序打包成.exe/.app的方法
2018/05/26 Python
无法使用pip命令安装python第三方库的原因及解决方法
2018/06/12 Python
在PyCharm下打包*.py程序成.exe的方法
2018/11/29 Python
pywinauto自动化操作记事本
2019/08/26 Python
简单总结CSS3中视窗单位Viewport的常见用法
2016/02/04 HTML / CSS
详解HTML5 Canvas绘制时指定颜色与透明度的方法
2016/03/25 HTML / CSS
丝芙兰法国官网:SEPHORA法国
2016/09/01 全球购物
美国南部最大的家族百货公司:Belk
2017/01/30 全球购物
Herve Leger官网:标志性绷带连衣裙等
2018/12/26 全球购物
出国英文推荐信
2014/05/10 职场文书
乡镇安全生产目标责任书
2014/07/23 职场文书
分公司总经理岗位职责
2014/08/03 职场文书
上班迟到检讨书
2014/09/15 职场文书
污染环境建议书
2015/09/14 职场文书