簡體   English   中英

div 的 Javascript 寬度,返回 0

[英]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獲取元素內容寬度,而不管paddingmargin屬性。


解決方案

嘗試使用.offsetWidth來源:MDN )屬性。 所不同的是,它包括它的元件的全寬paddingmargin的屬性。


更多信息

請參閱MSDN 示例及其參考

您也可以嘗試使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM