3

JavaScriptでタグのsrc属性を更新しています。これを行った後、ページ上の他の要素のサイズを更新できるよう<img>に、その親の新しい高さを取得する必要があります。ただし、画像の を更新した直後に<div>親のプロパティを取得すると、変更前の高さが取得されます。新しい高さを取得できるように、ブラウザーに更新されたページを強制的にレンダリングさせる方法はありますか?offsetHeightsrc

再現:

<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 に答える