2012-04-11 91 views
0

我需要在將內容填充到內容之前獲取shareddiv的實際寬度和高度,以便我可以確定有多少面板可以放入到shareddiv中設備或瀏覽器的分辨率HTML - 在將內容填充到內容之前獲取div寬度和高度

<div id="outerdiv"> 
<div style="width: 100% ;height:100%;" id="sharedDiv" ></div> 
</div> 

警報在代碼不同位置返回不同的值。

var divow = document.getElementById('sharedDiv').offsetWidth; 
     alert("div offsetwidth"+divow); 
+0

你將不得不發佈更多的代碼爲我們幫助弄清楚爲什麼它在代碼中的不同位置返回的值不同。代碼中這些不同點之間div的實際寬度是否發生變化?從我在這裏可以看到的情況來看,它看起來像是在正確的軌道上。 – Travesty3 2012-04-11 13:35:51

+0

等一等,你是否真的在說div的_width_會根據​​你查詢它的值而有所不同?嗯。 – 2012-04-11 13:51:25

+0

是的!如果我指定寬度= 100%和高度= 100%的樣式,我認爲div會佔用設備寬度和高度。因此,在將控件渲染到該div區域之前,如果能夠獲得div的大小,它將等於設備的寬度和高度,並且可以輕鬆地計算出正確裝入設備的控件數量。 – user1071096 2012-04-12 03:13:17

回答

0

只有當DOM和您的資源(CSS和圖像)加載後,您纔會獲得有效的測量結果。直到發生這種情況,頁面中的元素可能會四處移動並更改大小(漸進式呈現)。因此您應該在諸如onload的事件處理程序中進行測量。您還應該重新計算resize事件。

+0

在將任何控件放入其中之前需要使用div大小,以便根據設備分辨率可以檢測到適合該div區域的控件數量。但是,是的! div的寬度根據我查詢的位置而變化。 – user1071096 2012-04-12 02:47:40

+0

我知道。仔細閱讀我的答案。我試圖解釋,當你在加載頁面的時候進行查詢(就像通過內聯腳本標記一樣),你實際上正在做的是在已知最終維度之前,獲取元素維度的樣本。如果您等待頁面實際加載*然後*創建控件,您將獲得一致的結果。 – SpliFF 2012-04-12 04:39:06

0

你試過用jquery嗎?

var divow = $("#sharedDiv").outerWidth(); 

或更好,但爲什麼不乾脆

var divow = $(window).height(); 
+0

:沒有用$(window).height()指定任何元標記;但是我不明白我的ipad的屏幕分辨率是768x1024,那麼窗口大小如何可以是980x1208?因此,如果我計算適合的寬度和高度(980x1208) div區域和渲染,控件走出屏幕的寬度和高度,默認滾動會出現,或者我需要捏/縮放來查看所有我不想要的控件。 – user1071096 2012-04-12 03:01:34

+0

你能告訴我你想要通過獲得窗口的寬度和高度來完成什麼?也許我可以幫助你更好地瞭解到底是什麼。 – 2012-04-12 13:20:58