• 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一样高。

  • 相关阅读:
    docker 方式安装gitlab时,项目的clone地址及项目文件列表地址为机器名的问题解决办法
    CPU流水线
    Element中el-form嵌套el-table双击编辑提交检验
    java基础知识
    C#多线程下载
    mysql优化
    C++ 算法(一)
    前端vue 的面试总结 以及答案以及前端技术点面试
    C# 组合任务
    C# List去重DistinctBy扩展
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3198820.html
Copyright © 2020-2023  润新知