我正在更新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>
答案 0 :(得分:3)
如果您不需要立即使用新的高度,请使用Marc的解决方案。但是,如果您在用户点击时需要高度,则需要预先加载b.jpg。然后,我不知道相同函数中的高度是否正确,但我想是一个setTimeout('alert(document.getElementById(“parent”)。offsetHeight);',1);会在一毫秒内警告高度。
答案 1 :(得分:2)
在高度可用之前,您可能需要等待图像完成加载。在您的示例代码中,设置“src”属性将异步加载图像(b.jpg),因此您可能希望在该元素上附加“onload”处理程序,以便在完成加载和渲染时得到通知。