3

我正在更新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>
4

2 回答 2

3

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

于 2008-12-30T04:17:28.920 回答
2

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

于 2008-12-30T04:12:52.847 回答