[英]Javascript width of div, returns 0
我正在嘗試使用 javascript 為我的函數檢索 div 的寬度:
#areaDraw {
margin-top:50px;
width: 50%;
min-height: 100%;
z-index: 1000;
}
和功能:
Event.add(window, "resize", function() {
sketch.resize(document.getElementById("areaDraw").style.width, window.innerHeight);
}).listener();
不知何故,javascript 總是為 div(areaDraw) 的寬度返回 0
那么有什么問題:
document.getElementById("areaDraw").style.width
嘗試document.getElementById("mydiv").offsetWidth
而不是.style.width
改用這個:
document.getElementById("areaDraw").offsetWidth
編輯:根據要求,解釋為什么會這樣(作為額外的參考)。
這是因為屬性style.width
是 CSS 中明確定義的寬度, wheareas offsetWidth
查找元素在瀏覽器中顯示時的實際寬度。
document.getElementById("areaDraw").offsetWidth
試試這個:)
在您嘗試獲取其寬度時,您的#areaDraw
div
元素可能是空的。
element.style.width
獲取元素內容的寬度,而不管padding
或margin
屬性。
嘗試使用.offsetWidth
(來源:MDN )屬性。 所不同的是,它包括與它的元件的全寬padding
和margin
的屬性。
您也可以嘗試使用window.getComputedStyle
var elem = document.getElementById("areaDraw");
var width = window.getComputedStyle(elem, null).width;
考慮到在這種情況下寬度將是一個字符串(例如'290.5px')
getComputedStyle() 給出元素的所有 CSS 屬性的最終使用值。
元素必須有 style="display: block;" 和我的解決方案:
intId = 0;
function resize(con)
{
var width = con.offsetWidth;
if (width == 0)
{
var resfnc = function(con)
{
return function()
{
var width = con.offsetWidth;
if (width == 0)
{
return;
}
clearInterval(intId);
resize(con);
}
}
intId = setInterval(resfnc(con), 50);
return;
}
//...... work here
}
var resf = function (con)
{
return function ()
{
resize(con);
};
};
var con = document.querySelector("#elementID");
window.addEventListener('resize', resf(con), true);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.