我在DOM appendChild()
方法上遇到了麻烦。我创建一个节点,然后将此节点附加到父节点,然后我想读取node.clientWidth
属性,但它返回0,因为该节点尚未绘制。这是我的代码:
var node = document.createElement('div');
node.textContent = 'some text';
parent.appendChild(node);
alert(node.clientWidth); //shows 0
我在节点上尝试了onload
和onshow
个事件,但它们甚至没有被触发。我可以使用setTimeout
并且它正常工作,但这不是一个完美的解决方案。有一个很好的解决方案
对于这个问题?
抱歉我的英语不好,非常感谢你!
更新:好的,我看到了我的问题。那时的父级没有附加到DOM。对不起,谢谢你的时间
答案 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