2012-09-20 33 views
2

我有一個div元素,它沒有定義的寬度或高度。它擁有其他元素,並根據它們的大小進行模製。 我需要得到div的最終大小,而不能檢查它的內部元素(動態元素)的大小。Javascript - 獲取未定義元素的寬度

我試着解析對象的所有屬性,但什麼都沒發現,都是「未定義」。

有什麼想法?

非常感謝

後來編輯:

<div id="xxx" style="position:relative;"> 
    aaaa 
</div> 

我想:

var a = mydiv.style.width; 

但沒有奏效。

我也試過:

var getKeys = function (obj) { 
    var keys = []; 

    for(var key in obj){ 
     document.write(key+"="+obj.key+"<br>"); 
    } 

    return keys; 
} 

getKeys(mydiv.style); 

要顯示所有屬性,但沒有過任何信息。

jQuery解決方案完美運行,但getComputedStyle正是我所尋找的,因爲我無法在這裏使用jquery。

對不起,有關簡短的信息。

+2

而* *如何你做了嗎? –

+1

向我們展示所有返回undefined的屬性。即使你不明確地指定它,你總是可以獲得高度和寬度。請記住在浮動元素的情況下清除浮動 – Jashwant

回答

5

基於沒有任何關於你在做什麼樣的信息,我建議你(如果可能)使用window.getComputedStyle()方法,它找到一個對象的屬性由瀏覽器渲染:

var elem = document.getElementById('elemId'), 
    properties = window.getComputedStyle(elem, null), 
    height = properties.height, 
    width = properties.width; 

如果您有jQuery的可用,那麼你可以簡單地使用width()height()(或outerWidth()/outerHeight())方法:

var height = $('#elem').height(), 
    width = $('#elem').width(); 
+0

'.getComputedStyle()'在IE8及更高版本中不起作用,但對於這些元素有'.currentStyle'。 – Ana

+1

@Ana:是的,我考慮添加一個引用,但沒有Windows或IE,要在家測試,我沒有能力發佈經過驗證的工作示例代碼使用。 =/ –

+0

@DavidThomas這真的很有幫助,非常感謝你...先生! – Kyle

4

你不給一大堆的通知通貨膨脹。我建議你用你嘗試使用的實際代碼編輯你的文章。

然而,使用jQuery:

$(DOMElement).width()   //-- Element width. 
$(DOMElement).innerWidth()  //-- Element width + padding. 
$(DOMElement).outerWidth()  //-- Element width + padding & border. 
$(DOMElement).outerWidth(true) //-- Element width + padding, border, and margin. 
0

$('div').width()將返回寬度...