[英]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.