function getStyle(elem, styleName){ if(elem.style[styleName]){ //获取内联样式 return elem.style[styleName]; } else if(elem.currentStyle){ //IE特有的属性 return elem.currentStyle[styleName]; } else if(window.getComputedStyle){ //DOM标准属性 return window.getComputedStyle(elem, null)[styleName]; } else{ return null; } }
考虑到函数中有重复工作的部分,优化一下:
function getStyle(elem, styleName){ if(elem.currentStyle) { getStyle = function(elem, styleName) { if(elem.style[styleName]){ return elem.style[styleName]; } else { return elem.currentStyle[styleName]; } } } else if(window.getComputedStyle) { getStyle = function(elem, styleName) { if(elem.style[styleName]){ return elem.style[styleName]; } else { return window.getComputedStyle(elem, null)[styleName]; } } } else { getStyle = function(elem, styleName) { return elem.style[styleName]; } } return getStyle(elem, styleName); }
代码貌似有点长了,再优化一下:
function getStyle(elem, styleName){ if(elem.currentStyle) { getStyle = function(elem, styleName) { return elem.style[styleName] ? elem.style[styleName] : elem.currentStyle[styleName]; } } else if(window.getComputedStyle) { getStyle = function(elem, styleName) { return elem.style[styleName] ? elem.style[styleName] : window.getComputedStyle(elem, null)[styleName]; } } else { getStyle = function(elem, styleName) { return elem.style[styleName]; } } return getStyle(elem, styleName); }
不作多余代码解释了,网上搜下一大堆。