获取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 相关文章推荐
图片格式的JavaScript和CSS速查手册
Aug 20 Javascript
jquery复选框全选/取消示例
Dec 30 Javascript
js判断undefined类型示例代码
Feb 10 Javascript
JS实现鼠标单击与双击事件共存
Mar 08 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
Mar 10 Javascript
javascript 实现动态侧边栏实例详解
Nov 11 Javascript
JavaScript实现自定义媒体播放器方法介绍
Jan 03 Javascript
Angular实现下拉框模糊查询功能示例
Jan 03 Javascript
js登录滑动验证的实现(不滑动无法登陆)
Jan 03 Javascript
javascript中的隐式调用
Feb 10 Javascript
vue cli 全面解析
Feb 28 Javascript
使用Ajax实现进度条的绘制
Apr 07 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来处理多个提交任务
2006/10/09 PHP
PHP中__FILE__、dirname与basename用法实例分析
2014/12/01 PHP
Thinkphp和onethink实现微信支付插件
2016/04/13 PHP
javascript 关于# 和 void的区别分析
2009/10/26 Javascript
jQuery each()方法的使用方法
2010/03/18 Javascript
Jquery中显示隐藏的实现代码分析
2011/07/26 Javascript
获取非最后一列td值并将title设为该值的方法
2013/10/30 Javascript
setTimeout()与setInterval()方法区别介绍
2013/12/24 Javascript
js实现网页右上角滑出会自动消失大幅广告的方法
2015/02/27 Javascript
js鼠标单击和双击事件冲突问题的快速解决方法
2016/07/11 Javascript
vue和react等项目中更简单的实现展开收起更多等效果示例
2018/02/22 Javascript
nodejs实现的简单web服务器功能示例
2018/03/15 NodeJs
bootstrap-table实现表头固定以及列固定的方法示例
2019/03/07 Javascript
JS实现的字符串数组去重功能小结
2019/06/17 Javascript
跟老齐学Python之深入变量和引用对象
2014/09/24 Python
python3如何将docx转换成pdf文件
2018/03/23 Python
python定时关机小脚本
2018/06/20 Python
Pycharm更换python解释器的方法
2018/10/29 Python
Scrapy框架爬取Boss直聘网Python职位信息的源码
2019/02/22 Python
Python中的异常处理try/except/finally/raise用法分析
2019/02/28 Python
python爬取基于m3u8协议的ts文件并合并
2019/04/26 Python
Python处理时间日期坐标轴过程详解
2019/06/25 Python
python打包成so文件过程解析
2019/09/28 Python
python cv2截取不规则区域图片实例
2019/12/21 Python
Python制作运行进度条的实现效果(代码运行不无聊)
2021/02/24 Python
浅析HTML5:'data-'属性的作用
2018/01/23 HTML / CSS
加拿大领先的冒险和户外零售商:Atmosphere
2017/12/19 全球购物
英国太阳镜品牌:Taylor Morris Eyewear
2018/04/18 全球购物
文秘人员工作职责
2014/01/31 职场文书
2015秋季幼儿园开学寄语
2015/03/25 职场文书
从事会计工作年限证明
2015/06/23 职场文书
班级联欢会主持词
2015/07/03 职场文书
员工考勤管理制度
2015/08/06 职场文书
浅谈Redis位图(Bitmap)及Redis二进制中的问题
2021/07/15 Redis
Python if else条件语句形式详解
2022/03/24 Python
python神经网络Xception模型
2022/05/06 Python