• offsetHeight在OnLoad中为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;400px;">'
    		     + '<div style="float:left;50px;">测试</div>'
    		   	 + '<div style="float:left;320px;">danielinbiti</div>'
      		   + '</div>'
      		   + '<div id="divcj2" style="margin-top:15px;font-size:10px;400px;">'
    		   	 + '<div style="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一样高。

  • 相关阅读:
    java环境配置
    关于Chrome(谷歌浏览器)对docume,准确获取网页客户区的宽高、滚动条宽高、滚动条Left和Top
    CSS3圆角详解
    Js监控回车事件
    Sql日期时间格式转换
    JS操作JSON总结
    SQL日期操作及只获取日期的方法
    如何让div出现滚动条
    CodeForces 55D Beautiful numbers
    POJ 3034 Whac-a-Mole
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3198820.html
Copyright © 2020-2023  润新知