原生javascript获取元素样式属性值的方法


Posted in Javascript onDecember 25, 2010

所以, 我们得利用IE的currentStyle和W3C的getPropertyValue获取.
elem.style.attr获取样式的方法就不说了. 先来看currentStyle方法, 此对象ie专属, 代表了在全局样式表、内嵌样式和 HTML 标签属性中指定的对象格式和样式. IE下通过它, 就可以获取元素的Css属性值.
而针对其他标准浏览器, W3C也提供了一个方法getPropertyValue, 此方法, 稍有点复杂, 首先要通过document.defaultView.getComputedStyle获得Css的样式对象, 然后通过该对象的getPropertyValue获取属性值.
上述两种方法, 无论IE还是W3C的, 有一点是相同的, 它们所获取的是元素Css属性最终值. 这一点与Css的优先级是相同的.
有一点不同的是, IE的方法是通过Css属性的驼峰式名(如textAlign)获取, 而W3C的方法是通过元素Css原来的属性名(如text-align)获取的, 所以, 在使用W3C方法时, 需要对Css属性名做个简单的处理.
基于此, 我们可以封装一个获取元素属性值的方法, 如下:

function attrStyle(elem,attr){ 
if(elem.attr){ 
//若样式存在于html中,优先获取 
return elem.style[attr]; 
}else if(elem.currentStyle){ 
//IE下获取CSS属性最终样式(同于CSS优先级) 
return elem.currentStyle[attr]; 
}else if(document.defaultView && document.defaultView.getComputedStyle){ 
//W3C标准方法获取CSS属性最终样式(同于CSS优先级) 
//注意,此法属性原格式(text-align)获取的,故要转换一下 
attr=attr.replace(/([A-Z])/g,'-$1').toLowerCase(); 
//获取样式对象并获取属性值 
return document.defaultView.getComputedStyle(elem,null).getPropertyValue(attr); 
}else{ 
return null; 
} 
}

记得精通JavaScript一书中获取元素位置那一节(忘了是第6还是第7章), 有获取元素样式属性值更详细的解释. 第一次知道document.defaultVies.getComputedStyle就是从这本书来的. 很棒的一本书, 有兴趣的朋友话一定要看看.
原方发布于Mr.Think的博客: http://mrthink.net/js-get-cssproperty/
Javascript 相关文章推荐
JS弹出窗口代码大全(详细整理)
Dec 21 Javascript
jquery 定位input元素的几种方法小结
Jul 28 Javascript
通过pjax实现无刷新翻页(兼容新版jquery)
Jan 31 Javascript
jQuery实现下拉框左右选择的简单实例
Feb 22 Javascript
jQuery的基本概念与高级编程
May 14 Javascript
jquery实现手机号码选号的方法
Jul 31 Javascript
浅谈JS正则表达式的RegExp对象和括号的使用
Jul 28 Javascript
js实现表单提交后不重新刷新当前页面
Nov 30 Javascript
Javascript仿京东放大镜的效果
Mar 01 Javascript
AngularJS实现自定义指令与控制器数据交互的方法示例
Jun 19 Javascript
微信小程序实现打开内置地图功能【附源码下载】
Dec 07 Javascript
js验证账户名是否重复
May 26 Javascript
javascript中使用replaceAll()函数实现字符替换的方法
Dec 25 #Javascript
Javascript动态绑定事件的简单实现代码
Dec 25 #Javascript
浅析javascript闭包 实例分析
Dec 25 #Javascript
父子窗体间传递JSON格式的数据的代码
Dec 25 #Javascript
javascript自执行函数之伪命名空间封装法
Dec 25 #Javascript
Ext对基本类型的扩展 ext,extjs,format
Dec 25 #Javascript
JQuery live函数
Dec 24 #Javascript
You might like
基于php-fpm的配置详解
2013/06/03 PHP
php获取Google机器人访问足迹的方法
2015/04/15 PHP
10个超级有用的PHP代码片段果断收藏
2015/09/23 PHP
php插入含有特殊符号数据的处理方法
2016/11/24 PHP
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
2008/12/29 Javascript
jquery插件制作 提示框插件实现代码
2012/08/17 Javascript
Google的跟踪代码 动态加载js代码方法应用
2012/11/12 Javascript
将字符串转换成gb2312或者utf-8编码的参数(js版)
2013/04/10 Javascript
html的DOM中document对象forms集合用法实例
2015/01/21 Javascript
js分页工具实例
2015/01/28 Javascript
js仿土豆网带缩略图的焦点图片切换效果实现方法
2015/02/23 Javascript
js,jq,css多方面实现简易下拉菜单功能
2017/05/13 Javascript
Node.js使用Koa搭建 基础项目
2018/01/08 Javascript
vue.js input框之间赋值方法
2018/08/24 Javascript
JS实现4位随机验证码
2020/10/19 Javascript
基于JavaScript实现简单抽奖功能代码实例
2020/10/20 Javascript
[04:26]2014DOTA2国际邀请赛-Newbee顺利进入胜者组决赛 独家专访战神7
2014/07/19 DOTA
[03:20]2015国际邀请赛全明星表演赛
2015/08/08 DOTA
Python 基础教程之包和类的用法
2017/02/23 Python
Python正则抓取新闻标题和链接的方法示例
2017/04/24 Python
python opencv之SIFT算法示例
2018/02/24 Python
Pandas DataFrame数据的更改、插入新增的列和行的方法
2019/06/25 Python
基于python实现简单网页服务器代码实例
2020/09/14 Python
Python中的特殊方法以及应用详解
2020/09/20 Python
加拿大便宜的隐形眼镜商店:Clearly
2016/09/15 全球购物
Aeropostale官网:美国著名校园品牌及青少年服饰品牌
2019/03/21 全球购物
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern "C"
2014/08/09 面试题
违纪检讨书2000字
2014/02/08 职场文书
村长贪污检举信
2014/04/04 职场文书
学习雷锋标语
2014/06/25 职场文书
关于教师节的演讲稿
2014/09/04 职场文书
2014年自愿离婚协议书
2014/10/10 职场文书
2014年英语教师工作总结
2014/12/03 职场文书
2014年个人师德工作总结
2014/12/04 职场文书
迟到检讨书
2015/01/26 职场文书
php远程请求CURL案例(爬虫、保存登录状态)
2021/04/01 PHP