我创建了一个脚本来确定当div中放入各种单词时div是否会扩展超过130px宽度。该脚本基于Deepak Nadar的解决方案:Calculate text width with JavaScript
我的问题是看起来在注入的div准备好之前返回了outerWidth。我在while循环之前插入了2个警报。任何人都可以告诉我为什么我得到两个值,更好的是,如何推迟返回outerWidth直到元素准备好?谢谢!
for(i in words){
var div = document.createElement('div');
document.body.appendChild(div);
$(div).css({
position: 'absolute',
left: -1000,
top: -1000,
display: 'none'
});
$(div).html(words[i]);
var styles = ['font-size','font-style', 'font-weight', 'font-family','line-height', 'text-transform', 'letter-spacing'];
var $this = $(this)
$(styles).each(function() {
var s = this.toString();
$(div).css(s, $this.css(s));
});
alert($(div).outerWidth()); //Returns incorrect value of 121
alert($(div).outerWidth()); //Returns correct value of 134
while($(div).outerWidth() > MAXWIDTH){
FONTSIZE--;
$(div).css('font-size', FONTSIZE + 'px');
$(this).css('font-size', FONTSIZE + 'px');
}
} }