获取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 相关文章推荐
Firebug入门指南(Firefox浏览器)
Aug 21 Javascript
理解Javascript_02_理解undefined和null
Oct 11 Javascript
基于Jquery的回车成tab焦点切换效果代码(Enter To Tab )
Nov 14 Javascript
js jquery验证银行卡号信息正则学习
Jan 21 Javascript
jquery easyui滚动条部分设置介绍
Sep 12 Javascript
解析Javascript中中括号“[]”的多义性
Dec 03 Javascript
jquery 提示信息显示后自动消失的具体实现
Dec 18 Javascript
jQuery使用之标记元素属性用法实例
Jan 19 Javascript
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
May 25 Javascript
微信小程序获取用户openId的实现方法
May 23 Javascript
Angularjs Ng_repeat中实现复选框选中并显示不同的样式方法
Sep 12 Javascript
微信小程序动态显示项目倒计时
Jun 20 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
PHP-MySQL教程归纳总结
2008/06/07 PHP
php miniBB中文乱码问题解决方法
2008/11/25 PHP
PHP解密Unicode及Escape加密字符串
2015/05/17 PHP
php实现的错误处理封装类实例
2017/06/20 PHP
PHP字符串中抽取子串操作实例分析
2019/06/22 PHP
jQuery 使用手册(二)
2009/09/23 Javascript
jquery 鼠标滑动显示详情应用示例
2014/01/24 Javascript
一个html5播放视频的video控件只支持android的默认格式mp4和3gp
2014/05/08 Javascript
Javascript调用函数方法的几种方式介绍
2015/03/20 Javascript
javascript实现鼠标拖动改变层大小的方法
2015/04/30 Javascript
JS鼠标拖拽实例分析
2015/11/23 Javascript
jQuery获取某天的农历日期并判断是否除夕或新年的方法
2016/03/01 Javascript
Bootstrap富文本组件wysiwyg数据保存到mysql的方法
2016/05/09 Javascript
jQuery基本过滤选择器用法示例
2016/09/09 Javascript
webpack+vue.js快速入门教程
2016/10/12 Javascript
Bootstrap table学习笔记(2) 前后端分页模糊查询
2017/05/18 Javascript
在vue项目中使用sass的配置方法
2018/03/20 Javascript
浅谈angularJS2中的界面跳转方法
2018/08/31 Javascript
解决vue脚手架项目打包后路由视图不显示的问题
2018/09/20 Javascript
vue根据进入的路由进行原路返回的方法
2018/09/26 Javascript
微信小程序 数据缓存实现方法详解
2019/08/26 Javascript
vue 解决数组赋值无法渲染在页面的问题
2019/10/28 Javascript
在react项目中使用antd的form组件,动态设置input框的值
2020/10/24 Javascript
[02:28]DOTA2亚洲邀请赛附加赛 RECAP赛事回顾
2015/01/29 DOTA
Python中线程编程之threading模块的使用详解
2015/06/23 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
2019/08/09 Python
python如何将图片转换素描画
2020/09/08 Python
详解Python中的文件操作
2021/01/14 Python
为您搜罗全球潮流時尚品牌:HBX
2019/12/04 全球购物
应聘美工求职信
2013/11/07 职场文书
领导干部保密承诺书
2014/08/30 职场文书
大学新生军训自我鉴定范文
2014/09/13 职场文书
2014乡镇机关党员个人对照检查材料思想汇报
2014/10/09 职场文书
个人先进事迹材料范文
2014/12/29 职场文书
观看焦裕禄观后感
2015/06/09 职场文书
JavaScript 事件捕获冒泡与捕获详情
2021/11/11 Javascript