无法获取新创建元素的高度

Javascript: unable to get height of newly created element

本文关键字:元素 高度 创建 获取 新创建      更新时间:2023-09-26

使用新元素(例如body.append(html))更新DOM后,我不能立即获得新更新元素的高度(例如body.height())。部分修复方法是设置时间间隔并在时间间隔结束时获取高度(setTimeout("alert(body.height)", 500))。

有更好的主意吗?像DOM完全更新后的回调吗?谢谢。

编辑:这只发生在后台有很多事情要做的时候(即当页面第一次加载的时候)。如果没有其他处理,页面更新似乎几乎是即时的。我需要的是一个回调,或者一个指示DOM何时被修改的指示器!

编辑:这个问题来自于浏览器被其他进程"分心",这使得浏览器无法在元素追加后立即更新。我该如何解决这个问题?

timeout方法之所以有效,是因为渲染引擎有机会在那里显示新元素,方法是给它一个改变来渲染它,从而为它分配一个高度。

可以将超时时间设置为0,仍然具有相同的效果

使用jQuery对我来说很好。

在jsfiddle演示中,我放入了下面的代码:

$(function(){
    var jTest = $('#test');
    console.log('The height:',jTest.innerHeight(),jTest.height()); //Show me 'The height: 20 20'
    jTest.append('<div><br/>How are you?</div>');
    console.log('The height:',jTest.innerHeight(),jTest.height()); //Show me 'The height: 60 60'
});