3


appendChild()我在使用 DOM方法 时遇到了问题。我创建一个节点,然后将此节点附加到父节点,然后我想读取node.clientWidth属性,但它返回 0,因为尚未绘制节点。这是我的代码:

var node = document.createElement('div');
node.textContent = 'some text';
parent.appendChild(node);
alert(node.clientWidth); //shows 0

我尝试了节点上onloadonshow事件,但它们甚至没有被触发。我可以使用setTimeout它并且它正在工作,但这不是一个完美的解决方案。这个问题有好的解决方案吗?
对不起我的英语不好,非常感谢你!

更新:好的,我看到了我的问题。当时的父级没有附加到 DOM。抱歉,感谢您的宝贵时间

4

1 回答 1

0

如果您真的希望它在浏览器知道后立即为您提供 clientWidth,您可以这样做:

var node = document.createElement('div');
node.textContent = 'some text';
parent.appendChild(node);
var width = node.clientWidth;
while (width == 0) {
    width = node.clientWidth;
}
// stuff
于 2012-12-06T21:02:30.570 回答