3 回答

TA貢獻1836條經驗 獲得超4個贊
準確判斷div和圖片的高度。這是因為圖像可能會最后完成加載 - 如果在加載圖像之前檢查容器的高度,它將返回高度而不考慮圖像高度。
應將偵聽器添加到圖像中,以便在圖像加載后檢查高度。
img.addEventListener('load', onLoad);
因為樣式很簡單,offsetHeight并且clientHeight應該可以工作,但要包含整個元素(帶邊框和邊距)使用scrollHeight,如MDN web docs 上 Element.scrollHeight所述
結果代碼:
<div id="Content">
<img id="Image" src="https://picsum.photos/id/82/200/150" />
...
</div>
<br/>
<span id="Result"></span>
<script>
var img = document.getElementById("Image");
function onLoad() {
var div = document.getElementById("Content");
var res = document.getElementById("Result");
res.innerHTML = div.scrollHeight;
}
img.addEventListener('load', onLoad);
</script>

TA貢獻1860條經驗 獲得超8個贊
你必須window.onload改用。
加載整個頁面時會觸發 load 事件,包括所有相關資源,例如樣式表和圖像。這與 DOMContentLoaded 不同,后者在頁面 DOM 加載后立即觸發,無需等待資源完成加載。參考
在您的情況下,您需要等待圖像而不僅僅是 DOM。
window.onload = function() {
var div = document.getElementById("Content");
var res = document.getElementById("Result");
res.innerHTML = div.offsetHeight;
};
div {
width: 400px;
}
img {
float: left;
margin: 0.5em;
}
<div id="Content">
<img src="https://picsum.photos/id/82/200/150" /> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Orci phasellus egestas tellus rutrum. Tempor nec feugiat nisl pretium fusce.
Cras pulvinar mattis nunc sed blandit libero volutpat sed cras. Purus sit amet luctus venenatis lectus magna fringilla urna. Ut tristique et egestas quis. Mauris cursus mattis molestie a iaculis at erat pellentesque adipiscing. Iaculis eu non diam phasellus
vestibulum lorem sed risus ultricies. Semper quis lectus nulla at. Augue interdum velit euismod in. Amet aliquam id diam maecenas ultricies mi eget. Scelerisque viverra mauris in aliquam sem fringilla ut morbi. Et egestas quis ipsum suspendisse. Et
malesuada fames ac turpis. Fermentum iaculis eu non diam phasellus vestibulum lorem sed.
</div>
<br/>
<span id="Result"></span>

TA貢獻1942條經驗 獲得超3個贊
我不確定我是否完全理解您的問題,但您可以使用 javascript 來計算 div 的高度。
var height = document.getElementsByTagName('div').offsetHeight;
添加回答
舉報