内置函数getComputedStyle()
在JS中,我们经常会对DOM元素对象进行样式的操作,那么我们又该如何进行读、取呢?首先,我们可以通过js内置的函数getComputedStyle()来获取到计算后元素的样式的一个对象,通过样式属性取到我们想要的属性值
var oDiv = document.getElementsByTagName('div')[0];
var oStyle=getComputedStyle(oDiv)//这是一个对象
var oWidth=oStyle.width//获取到元素宽的值
*注:getComputedStyle()得到的样式对象,只能读,不能写
但是,getComputedStyle()只适用于标准下的浏览器,对于IE9版本以下的IE浏览器是不支持的,那么,在IE中我们又该如何来获取元素的样式呢?同样,IE虽然有自己的一套规则,但还是会为我们对元素进行操作提供规则的,我们可以使用currentStyle来获取ie下元素样式
var oDiv = document.getElementById('div');//在IE中通过className获取元素是不行的
var oWidth=oDiv.currentStyle.width.//在IE中打开,获取到元素宽的值
然而currentStyle又不能在其他浏览器中使用,所以,我们为了方便且能解决这一兼容问题,可以将这两种方法编写成一个getStyle()函数,这样,在不同的浏览器打开也就不会出现问题了
var oDiv = document.getElementById('div');
function getStyle(obj, attr){
//兼容性的时候, 判断浏览器是否支持这个方法或属性, 可以直接判断
if( obj.currentStyle ){
return obj.currentStyle[attr];
}
else{
var style = getComputedStyle(obj);
return style[attr];
}
}
console.log ( getStyle(oDiv,width) )