2011-11-23 73 views
1

我正在通過JavaScript動態創建一些HTML元素。東西線這樣的:HTML/CSS/JS:在將元素的大小附加到DOM樹之前是否可以找到元素的大小?

 var author = document.createElement("div"); 
     author.innerHTML = _feed[i].author; 
     author.className = "author"; 

如果元素不被添加到該文件還沒有瀏覽器返回offsetHeight = 0

我想知道元素的高度,然後將它們附加到文檔中,因爲如果元素的結果高度太大,我需要採取一些操作(使其更小),並且只有在將其添加到文檔之後。

+0

...'_feed [i]'當然是由AJAX拍攝的。它包含一些未知的HTML裏面 – Dan

+0

感謝您的任何想法如何做到這一點...... – Dan

回答

0

丹你會遇到的問題是,除非你把它添加到DOM,那麼你永遠不會準確地知道高度會是什麼。原因是由於元素不在DOM中,因此不能受CSS中設置的樣式或瀏覽器默認樣式的影響。即使元素本身沒有應用於它的特定樣式,那麼它的父元素可能會這樣做,甚至是它的祖父元素(我只是讓祖父元素變成了?)。

獲取高度的唯一準確方法是將元素放置在DOM座標中,然後檢測高度。我不認爲visibility:hidden;會工作,因爲它的存在仍然會被它周圍的元素所感受到(推動周圍的空白和定位其他元素)。

position:absolute; left: -5000px;怎麼樣?這可能有效。

+0

這件作品100% – Dan

3

我的建議是將其添加到頁面左邊距爲-10000或其他東西,以便它不可見。然後你可以得到尺寸,做你需要的,然後改變左邊距,以便它在你想要的地方。這假設你會使用絕對定位。

但據我所知,瀏覽器不會報告那些不在DOM中的元素的信息。

+0

你想告訴你最後一段?任何瀏覽器都不會返回元素的大小,除非它沒有添加到文檔樹中,所以我應該停止嘗試? (感謝您的澄清) – Dan

+0

如何使用'visibility:hidden' ???!好主意? – Dan

+0

麻煩的是,你仍然會出現一個空的空白區域。 – dnuttle

相關問題