火狐在用offsetHeight获取div的高度时为0的解决方法

前端技术 2023/09/07 CSS
火狐在需要获取div的高度时,往往需要用到offsetHeight,有时会碰到offsetHeight获取到为0的现象,
在使用IE或者火狐中,特别在目前div+css的方式,往往不定义div的高度,这是在添加div内容后,需要获取div的高度时,往往需要用到offsetHeight。

在使用中,有时会碰到offsetHeight获取到为0的现象,但如果你用各种JS调试工具调试,又能在对象中看到值(如果直接指向offsetHeight是没值的,但如果是对象查看是有值的,在调试器中回车查看对象就已经刷新对象了,所以有值。)

比如下面片段
代码如下:

复制代码
代码如下:

<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<html>
<head>
<script language=\'javascript\'>
window.attachEvent( \"onload\", function(){ _resizeScroll2();} );
window.onresize=function(){winresize();};
function _resizeScroll2(){
var html1 = \'<div id=\"divcj\" style=\"margin-top:15px;font-size:10px;width:400px;\">\'
+ \'<div style=\"float:left;width:50px;\">测试</div>\'
+ \'<div style=\"float:left;width:320px;\">danielinbiti</div>\'
+ \'</div>\'
+ \'<div id=\"divcj2\" style=\"margin-top:15px;font-size:10px;width:400px;\">\'
+ \'<div style=\"width:320px;\">danielinbiti</div>\'
+ \'</div>\'
document.getElementById(\'outer\').innerHTML=html1;
document.getElementById(\'divcj2\').style.display=\'none\';
alert(document.getElementById(\'divcj2\').offsetHeight);
}
</script>
</head>
<body>
<div id=\'outer\'></div>
</body>
</html>


如果获取divcj的高度,那么在onload中获取到的是0。因为divcj下有float方式布局的。

这时如果div简单,可以借助隐藏层,比如这里的divcj2,把float去掉后,获取到的高度和divcj一样高。

这里有一个关键点就是float布局在ie是没问题,但是对于火狐它取到就为0了

本文地址:https://www.stayed.cn/item/19007

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。