JS获取obj样式之obj.offset与obj.style的区别
作者:秋了秋 发表时间:2015年05月04日
用js动态获取某个元素的样式,比如宽度、高度等,用获取高度来举例,可以想到的是$(obj).height()、$(obj).css('height')、obj.style.height、obj.offsetHeight四种方法,没错!这四种方法都可以的。但是在实际操作中我们往往使用obj.offsetHeight,为什么?其实这四个是有区别的。之所以用obj.offsetHeight,是因为其优越于其它三个方法。
比较:1、obj.offsetHeight获取到的是在浏览器显示的高度,无论你这个高度样式是行内样式还是内联样式还是外部样式还是@import引入样式,它都能获取到,在表现与结构分离的今天,这显然非常好的。而且它把padding-top和padding-bottom值纳入为高度。所以它获取到obj的高度为padding-top+height+padding-bottom。
2、obj.offsetHeight返回的是一个数值,而obj.style.height返回的是一个字符串,单位是“px”
3、obj.offsetHeight是只读,而obj.style.height是可读写
4、如果没有为元素设置高度,obj.offsetHeight会根据内容获取高度值,而obj.style.height会返回undefind 其中$(obj).height()和($(obj).css('height')是jQuery里的方法,但是$(obj).height()返回的是数值而($(obj).css('height')返回的是一个带有单位的字符串)。另外obj.offsetHeight的obj必须是个id值,使用方法:【document.all.ID值.offsetHeight】,其它可以是class等。