zoukankan      html  css  js  c++  java
  • 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一样高。

  • 相关阅读:
    mysql应用技巧
    Python httplib学习
    桌标相关知识
    行业百科知识--Github
    Ghost win7 系统安装(虚拟机)
    记一次pycharm和vscode因网络问题插件下载失败的问题
    Pydiction补全插件
    MS17-010远程溢出漏洞(CVE-2017-0143)
    shell快速入门
    Yarn架构
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3198820.html
Copyright © 2011-2022 走看看