我试图用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();
不知何故,javscript总是为div的宽度(areaDraw)返回0
所以有什么不对的:
document.getElementById("areaDraw").style.width
答案 0 :(得分:4)
请改用:
document.getElementById("areaDraw").offsetWidth
编辑:根据要求,解释其原因(仅作为额外参考)。
这是因为属性style.width
是CSS中明确定义的宽度,wheareas offsetWidth
找到元素在浏览器中显示的实际宽度。
答案 1 :(得分:3)
尝试使用document.getElementById("mydiv").offsetWidth
代替.style.width
答案 2 :(得分:1)
document.getElementById("areaDraw").offsetWidth
试试这个:)
答案 3 :(得分:1)
您尝试获取宽度时,#areaDraw
div
元素可能为空。
element.style.width
或padding
属性如何, margin
都会获得元素的内容宽度。
尝试使用.offsetWidth
(来源:MDN )属性。不同之处在于它包含元素 全宽 其padding
和margin
属性。
答案 4 :(得分:1)
您也可以尝试使用window.getComputedStyle
var elem = document.getElementById("areaDraw");
var width = window.getComputedStyle(elem, null).width;
考虑到在这种情况下宽度将是一个字符串(例如,g' 290.5px')
getComputedStyle()给出元素的所有CSS属性的最终使用值。
答案 5 :(得分:0)
元素必须有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);