Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取div高度的jQuery返回0_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 获取div高度的jQuery返回0

Javascript 获取div高度的jQuery返回0,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个jquery html对象: var $header = $('<div id="print-header" class="print-header" style="width: ' + this.previewWidth + 'px; min-height: 190px;"></div>'); 在循环过程中,当元素被追加时,我会向$header $header.append('<div class="clear" style="clear: both;"

我有一个jquery html对象:

var $header = $('<div id="print-header" class="print-header" style="width: ' + this.previewWidth + 'px; min-height: 190px;"></div>');
在循环过程中,当元素被追加时,我会向
$header

$header.append('<div class="clear" style="clear: both;"></div>');

我尝试过使用
$(window.load()
,但没有成功。div可见(
display:block;
)。我还尝试添加
overflow:hidden,在将元素附加到DOM之后,浏览器需要呈现的元素不起作用。只要稍等片刻,你就可以得到高度

首先确保将标题附加到DOM中,否则它不会被渲染,因此永远不会获得高度

document.body.appendChild($header);

$header.append('<div class="clear" style="clear: both;"></div>');
console.log($header); // returns the $header object

setTimeout(function(){

     console.log("Normal: " + $header.height()); 
     console.log("Outer: " + $header.outerHeight());
     console.log("Inner: " + $header.innerHeight());
     console.log("Scroll: " + $header.prop("scrollHeight"));
}, 100);
document.body.appendChild($header);
$header.append(“”);
console.log($header);//返回$header对象
setTimeout(函数(){
log(“正常:+$header.height());
log(“Outer:+$header.outerHeight());
log(“内部:+$header.innerHeight());
log(“滚动:+$header.prop(“滚动高度”));
}, 100);

你能不能把你的疑问用小提琴演奏出来?解读@sudharsan的信息:你能用小提琴演示你的疑问吗?你有没有试着把“clear”类放到你的“print header”中?或简单的put float:左也用于if。但是如果没有您的代码,我们可以预测行为。但是$header没有附加到DOM中,看起来…append()是同步工作的,这里的超时似乎没有用,可能在IE8上有用首先确保将头附加到DOM,否则它不会被渲染
我想这是OP的问题:)然后我们不需要任何
设置超时来延迟它,在它被附加后立即获取它。append()可以同步工作,但渲染不能。只有在渲染之后,您才能获得高度(取决于css等)。@edispring您可以在所有现代浏览器上测试它,只要元素被附加到DOM中,样式就会被计算出来。好吧,只有旧的IE版本才有这个问题
console.log($header); // returns the $header object
console.log("Normal: " + $header.height()); // returns 0
console.log("Outer: " + $header.outerHeight()); // returns 0
console.log("Inner: " + $header.innerHeight()); // returns 0
console.log("Scroll: " + $header.prop("scrollHeight")); // returns 0
document.body.appendChild($header);

$header.append('<div class="clear" style="clear: both;"></div>');
console.log($header); // returns the $header object

setTimeout(function(){

     console.log("Normal: " + $header.height()); 
     console.log("Outer: " + $header.outerHeight());
     console.log("Inner: " + $header.innerHeight());
     console.log("Scroll: " + $header.prop("scrollHeight"));
}, 100);