javascript:执行appendChild(节点),然后尝试读取node.clientWidth失败

时间:2012-12-06 20:59:28

标签: javascript dom appendchild


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

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

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

更新:好的,我看到了我的问题。那时的父级没有附加到DOM。对不起,谢谢你的时间

1 个答案:

答案 0 :(得分: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