获取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 相关文章推荐
用js实现预览待上传的本地图片
Mar 15 Javascript
jQuery父级以及同级元素查找介绍
Sep 04 Javascript
JS实现切换标签页效果实例代码
Nov 01 Javascript
javascript 模拟坦克大战游戏(html5版)附源码下载
Apr 08 Javascript
JavaScript字符串常用类使用方法汇总
Apr 14 Javascript
JS+CSS实现下拉列表框美化效果(3款)
Aug 15 Javascript
JS截取与分割字符串常用技巧总结
Nov 10 Javascript
javascript实现简单的可随机变色网页计算器示例
Dec 30 Javascript
jquery实现静态搜索功能(可输入搜索文字)
Mar 28 jQuery
webpack里使用jquery.mCustomScrollbar插件的方法
May 30 jQuery
解决vue-router 二级导航默认选中某一选项的问题
Nov 01 Javascript
node.js实现http服务器与浏览器之间的内容缓存操作示例
Feb 11 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安全的URL字符串base64编码和解码
2014/06/19 PHP
取得单条网站评论以数组形式进行输出
2014/07/28 PHP
php获取CSS文件中图片地址并下载到本地的方法
2014/12/02 PHP
PHP动态规划解决0-1背包问题实例分析
2015/03/23 PHP
php获取远程文件的内容和大小
2015/11/03 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
2016/11/25 PHP
js获取或设置当前窗口url参数的小例子
2013/10/14 Javascript
如何通过javascript操作web控件的自定义属性
2013/11/25 Javascript
Ajax提交与传统表单提交的区别说明
2014/02/07 Javascript
JavaScript编写连连看小游戏
2015/07/07 Javascript
javascript伸缩型菜单实现代码
2015/11/16 Javascript
js方法数据验证的简单实例
2016/09/17 Javascript
JS实现两周内自动登录功能
2017/03/23 Javascript
jQuery动态追加页面数据以及事件委托详解
2017/05/06 jQuery
JS实现动态给标签控件添加事件的方法示例
2017/05/13 Javascript
vue-quill-editor+plupload富文本编辑器实例详解
2018/10/19 Javascript
Vue项目中最新用到的一些实用小技巧
2018/11/06 Javascript
Centos7 安装Node.js10以上版本的方法步骤
2019/10/15 Javascript
浅谈Vue3.0新版API之composition-api入坑指南
2020/04/30 Javascript
使用Python的Treq on Twisted来进行HTTP压力测试
2015/04/16 Python
python中is与双等于号“==”的区别示例详解
2017/11/21 Python
python爬取拉勾网职位数据的方法
2018/01/24 Python
浅析Python pandas模块输出每行中间省略号问题
2018/07/03 Python
python图像处理模块Pillow的学习详解
2019/10/09 Python
pandas中ix的使用详细讲解
2020/03/09 Python
Python getattr()函数使用方法代码实例
2020/08/10 Python
HTML5 背景的显示区域实现
2020/07/09 HTML / CSS
意大利综合购物网站:Giordano Shop
2016/10/21 全球购物
Crocs欧洲官网:Crocs Europe
2020/01/14 全球购物
采购文员岗位职责
2013/11/20 职场文书
远程网络教育毕业生自我鉴定
2014/04/14 职场文书
槐乡的孩子教学反思
2014/04/27 职场文书
2014年职称评定工作总结
2014/11/26 职场文书
2015年“我们的节日·中秋节”活动总结
2015/07/30 职场文书
Python-typing: 类型标注与支持 Any类型详解
2021/05/10 Python
mysql 直接拷贝data 目录下文件还原数据的实现
2021/07/25 MySQL