0

通常当您在 html 中创建一个 div 时。您可以使用 offsetWidth 或 style.width(如果已声明)检查其宽度。但是,如果更改了 innerHTML 使得 div 的宽度也发生了变化,那么这些函数都不起作用(不确定,但在我的情况下它们没有)。

一些代码:

var div = document.createElement("div");
div.innerHtml = "asdfasdfasdfasdfsdfasdfasdfad";
alert(div.style.width); // this is nothing
alert(div.offsetWidth); // this is 0

你如何得到上面div的宽度?

4

2 回答 2

3

我意识到这是一个老问题,但对于从谷歌登陆这里的许多人,我会提供它。

这是在 dojo 1.7+ 中执行此操作的方法。使用几何模块,您可以获取和设置内容的宽度(不包括填充或边框)。这忽略了盒子大小。

require(['dojo/dom-geometry'], function(domGeom) {
    var myDivNode = dojo.query('div')[0];
    var contentBox = domGeom.getContentBox(myDivNode);
    alert(contentBox.w);

    // This is how to set width/height
    domGeom.setContentSize(myDivNode, {w: 100, h: 100});
});

来源:https ://dojotoolkit.org/reference-guide/1.7/dojo/contentBox.html

于 2013-10-10T13:58:35.170 回答
1

您无法获取未附加到文档的元素的宽度值。

所以你应该把它附加到页面上,而不是你能得到宽度,

这是一个工作演示

于 2012-04-06T20:49:09.820 回答