DHTML:获取更新的元素大小

时间:2008-12-30 04:06:31

标签: javascript dhtml

我正在更新javascript中src标记的<img>属性。完成此操作后,我需要获取其父<div>的新高度,以便我可以更新页面上其他元素的大小。但是,如果我在更新图像的offsetHeight后直接检索父项src属性,则在进行更改之前得到高度。有没有办法强制浏览器呈现更新的页面,以便我可以获得新的高度?

摄制:

<html>
<head>
<script type="text/javascript">
    function changeImage(){
        document.getElementById("image").src = "b.jpg";
        // here I need to re-render the page
        alert(document.getElementById("parent").offsetHeight);
        // ^ alerts the height of a.jpg, not b.jpg (unless this is the second click)
    }
</script>
</head>

<body onclick="changeImage()">

<div id="parent">
    <img id="image" src="a.jpg" />
</div>

</body>
</html>

2 个答案:

答案 0 :(得分:3)

如果您不需要立即使用新的高度,请使用Marc的解决方案。但是,如果您在用户点击时需要高度,则需要预先加载b.jpg。然后,我不知道相同函数中的高度是否正确,但我想是一个setTimeout('alert(document.getElementById(“parent”)。offsetHeight);',1);会在一毫秒内警告高度。

答案 1 :(得分:2)

在高度可用之前,您可能需要等待图像完成加载。在您的示例代码中,设置“src”属性将异步加载图像(b.jpg),因此您可能希望在该元素上附加“onload”处理程序,以便在完成加载和渲染时得到通知。