博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
获取元素样式信息于三中获取方式的区别
阅读量:5293 次
发布时间:2019-06-14

本文共 3086 字,大约阅读时间需要 10 分钟。

大家都知道,用document.getElementById(‘element').style.xxx可以获取元素的样式信息,可是它获取的只是DOM元素style属性里的样式规则,对于通过class属性引用的外部样式表,就拿不到我们要的信息了。

DOM标准里有个全局方法getComputedStyle,可以获取到当前对象样式规则信息,如:getComputedStyle(obj,null).paddingLeft,就能获取到对象的左内边距。但是事情还没完,万恶的IE不支持此方法,它有自己的一个实现方式,那就是currentStyle,不同于全局方法getComputedStyle,它是作为DOM元素属性存在的,如:obj.currentStyle.paddingLeft,在IE中就获取到对象的左内边距了,兼容性的写法如下:

 代码如下:
return window.getComputedStyle ? window.getComputedStyle(obj,null).paddingLeft : obj.currentStyle.paddingLeft;

这样,就能在IE及FF中返回对象的当前样式信息了。
特别注意一点:如果要获取当前对象的颜色信息,IE返回的是16进制的'#ffffff',而FF返回的是rgb(255,255,255)
用js的style属性可以获得的样式,但是不能获取非行间样式。那么怎么用js获取的非行间样式呢?在IE下可以用currentStyle,而在下面我们需要用到getComputedStyle。下面是一个小示例:

代码如下:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>js用currentStyle和getComputedStyle获取css样式</title>
<style type="text/css">
#div1{width:100px; height:100px; background:red;}
</style>
<script type="text/javascript">
function getStyle(obj, attr)
{
if(obj.currentStyle)
{
return obj.currentStyle[attr];
}
else
{
return getComputedStyle(obj,false)[attr];
}
}
window.οnlοad=function()
{
var oDiv=document.getElementById('div1');
alert(getStyle(oDiv,'width'))
}
</script>
</head>
<body>
<div id="div1"></div>
</body>
</html> 
 
2. 读取内联之外的样式(style、currentStyle、getComputedStyle区别
 
最常用的是style属性,在JavaScript中,通过document.getElementById(id).style.XXX就可以获取到XXX的值,但意外的是,这样做只能取到通过内嵌方式设置的样式值,即style属性里面设置的值。

样式表有三种方式

内嵌样式(inline Style) :是写在Tag里面的,内嵌样式只对所有的Tag有效。
内部样式(internal Style Sheet):是写在HTML的<head></head>里面的,内部样式只对所在的网页有效。
外部样式表(External Style Sheet):如果很多网页需要用到同样的样式(Styles),将样式(Styles)写在一个以.css为后缀的CSS文件里,然后在每个需要用到这些样式(Styles)的网页里引用这个CSS文件。
下面的是读取除了内嵌样式之外样式的js,只能读不能写。

复制代码 代码如下:
var mydiv = document.getElementById('mydiv');
if(mydiv.currentStyle) {
var width = mydiv.currentStyle['width'];
alert('ie:' + width);
} else if(window.getComputedStyle) {
var width = window.getComputedStyle(mydiv , null)['width']
alert('firefox:' + width);
}
另外在FF下还可以通过下面的方式获取
document.defaultView.getComputedStyle(mydiv,null).width
window.getComputedStyle(mydiv , null).width 
 
 
最常用的是style属性,在JavaScript中,通过document.getElementById(id).style.XXX就可以获取到XXX的值,但意外的是,这样做只能取到通过内嵌方式设置的样式值,即style属性里面设置的值。
解决方案:引入currentStyle,runtimeStyle,getComputedStyle
style 标准的样式!可能是由style属性指定的!
runtimeStyle 运行时的样式!如果与style的属性重叠,将覆盖style的属性!
currentStyle 指 style 和 runtimeStyle 的结合!
通过currentStyle就可以获取到通过内联或外部引用的CSS样式的值了(仅限IE)
如:document.getElementById("test").currentStyle.top
要兼容FF,就得需要getComputedStyle 出马了
注意:getComputedStyle是firefox中的,
currentStyle是ie中的.
比如说
复制代码 代码如下:
<style>
#mydiv {
width : 300px;
}
</style>
则:
复制代码 代码如下:
var mydiv = document.getElementById('mydiv');
if(mydiv.currentStyle) {
var width = mydiv.currentStyle['width'];
alert('ie:' + width);
} else if(window.getComputedStyle) {
var width = window.getComputedStyle(mydiv , null)['width'];
alert('firefox:' + width);
}
另外在FF下还可以通过下面的方式获取
复制代码 代码如下:
document.defaultView.getComputedStyle(mydiv,null).width
window.getComputedStyle(mydiv , null).width 

转载于:https://www.cnblogs.com/cainiaoz/p/3994725.html

你可能感兴趣的文章
django (五) 第一个django app 创建template,修改admin外观
查看>>
$parse:表达式转换
查看>>
Android即时通讯与IOS端发送语音的问题。
查看>>
七大经典算法
查看>>
Cacti监控Linux主机
查看>>
python IDE比较与推荐
查看>>
Yii2框架打包成Phar包报错的经历
查看>>
MSSQL Sql加密函数 hashbytes 用法简介
查看>>
Linux学习笔记(四)Linux常用命令:帮助命令
查看>>
添加第一个控制器(Controllers)
查看>>
python的reflect反射方法
查看>>
Error Code: 1175. You are using safe update
查看>>
c语言--第0次作业
查看>>
Lake Counting
查看>>
P2280 [HNOI2003]激光炸弹
查看>>
Nginx配置详解
查看>>
python3 人人网保存登陆的cookie
查看>>
查看Apache并发请求数及其TCP连接状态
查看>>
ArrayList与List<T>笔记
查看>>
Python : 什么是*args和**kwargs?
查看>>